From: <fab...@us...> - 2010-09-22 16:04:23
|
Revision: 5199 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5199&view=rev Author: fabiomaulo Date: 2010-09-22 16:04:12 +0000 (Wed, 22 Sep 2010) Log Message: ----------- Fix NH-2288 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithDefault.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithNothing.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithSpecific.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/Fixture.cs Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-21 15:00:19 UTC (rev 5198) +++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-22 16:04:12 UTC (rev 5199) @@ -552,11 +552,14 @@ /// </summary> public Mappings CreateMappings(Dialect.Dialect dialect) { + string defaultCatalog = PropertiesHelper.GetString(Environment.DefaultCatalog, properties, null); + string defaultSchema = PropertiesHelper.GetString(Environment.DefaultSchema, properties, null); + ProcessPreMappingBuildProperties(); return new Mappings(classes, collections, tables, NamedQueries, NamedSQLQueries, SqlResultSetMappings, Imports, secondPasses, filtersSecondPasses, propertyReferences, namingStrategy, typeDefs, FilterDefinitions, extendsQueue, auxiliaryDatabaseObjects, tableNameBinding, columnNameBindingPerTable, defaultAssembly, - defaultNamespace, dialect); + defaultNamespace, defaultCatalog, defaultSchema, dialect); } private void ProcessPreMappingBuildProperties() Modified: trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-09-21 15:00:19 UTC (rev 5198) +++ trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-09-22 16:04:12 UTC (rev 5199) @@ -110,6 +110,8 @@ IDictionary<Table, ColumnNames> columnNameBindingPerTable, string defaultAssembly, string defaultNamespace, + string defaultCatalog, + string defaultSchema, Dialect.Dialect dialect) { this.classes = classes; @@ -130,6 +132,8 @@ this.columnNameBindingPerTable = columnNameBindingPerTable; this.defaultAssembly = defaultAssembly; this.defaultNamespace = defaultNamespace; + DefaultCatalog = defaultCatalog; + DefaultSchema = defaultSchema; this.dialect = dialect; this.filtersSecondPasses = filtersSecondPasses; } @@ -209,6 +213,9 @@ set { defaultAssembly = value; } } + public string DefaultCatalog { get; set; } + public string DefaultSchema { get; set; } + public Mapping.Collection GetCollection(string role) { return collections[role]; Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs 2010-09-21 15:00:19 UTC (rev 5198) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs 2010-09-22 16:04:12 UTC (rev 5199) @@ -57,8 +57,8 @@ private void SetMappingsProperties(HbmMapping mappingSchema) { - mappings.SchemaName = mappingSchema.schema; - mappings.CatalogName = mappingSchema.catalog; + mappings.SchemaName = mappingSchema.schema ?? mappings.DefaultSchema; + mappings.CatalogName = mappingSchema.catalog ?? mappings.DefaultCatalog; mappings.DefaultCascade = mappingSchema.defaultcascade; mappings.DefaultAccess = mappingSchema.defaultaccess; mappings.DefaultLazy = mappingSchema.defaultlazy; Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithDefault.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithDefault.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithDefault.hbm.xml 2010-09-22 16:04:12 UTC (rev 5199) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2288" + assembly="NHibernate.Test" + catalog="nhibernate" + schema="dbo"> + + <class name="Aclass"> + <id name="Id"> + <generator class="native"/> + </id> + </class> + + <class name="Bclass"> + <id name="Id"> + <generator class="native"/> + </id> + <bag name="Aclasses"> + <key foreign-key="Aclasses_Id_FK" /> + <one-to-many class="Aclass"/> + </bag> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithNothing.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithNothing.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithNothing.hbm.xml 2010-09-22 16:04:12 UTC (rev 5199) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2288" + assembly="NHibernate.Test"> + + <class name="Aclass"> + <id name="Id"> + <generator class="native"/> + </id> + </class> + + <class name="Bclass"> + <id name="Id"> + <generator class="native"/> + </id> + <bag name="Aclasses"> + <key foreign-key="Aclasses_Id_FK" /> + <one-to-many class="Aclass"/> + </bag> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithSpecific.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithSpecific.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/AclassWithSpecific.hbm.xml 2010-09-22 16:04:12 UTC (rev 5199) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2288" + assembly="NHibernate.Test" + catalog="somethingDifferent" + schema="somethingDifferent"> + + <class name="Aclass" catalog="nhibernate" schema="dbo"> + <id name="Id"> + <generator class="native"/> + </id> + </class> + + <class name="Bclass" catalog="nhibernate" schema="dbo"> + <id name="Id"> + <generator class="native"/> + </id> + <bag name="Aclasses"> + <key foreign-key="Aclasses_Id_FK" /> + <one-to-many class="Aclass"/> + </bag> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2288/Fixture.cs 2010-09-22 16:04:12 UTC (rev 5199) @@ -0,0 +1,84 @@ +using System.Collections; +using System.Text; +using NHibernate.Cfg; +using NHibernate.Tool.hbm2ddl; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2288 +{ + [TestFixture] + public class Fixture + { + private static void CheckDialect(Configuration configuration) + { + if (!configuration.Properties[Environment.Dialect].Contains("MsSql")) + Assert.Ignore("Specific test for MsSQL dialects"); + } + + private static void AssertThatCheckOnTableExistenceIsCorrect(Configuration configuration) + { + var su = new SchemaExport(configuration); + var sb = new StringBuilder(500); + su.Execute(x => sb.AppendLine(x), false, false); + string script = sb.ToString(); + script.Should().Contain( + "if exists (select 1 from sys.objects where object_id = OBJECT_ID(N'dbo.[Aclasses_Id_FK]') AND parent_object_id = OBJECT_ID('dbo.Aclass'))"); + } + + [Test] + public void TestForClassWithDefaultSchema() + { + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + CheckDialect(cfg); + cfg.SetProperty(Environment.DefaultCatalog, "nhibernate"); + cfg.SetProperty(Environment.DefaultSchema, "dbo"); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2288.AclassWithNothing.hbm.xml", GetType().Assembly); + AssertThatCheckOnTableExistenceIsCorrect(cfg); + } + + [Test] + public void WithDefaultValuesInMapping() + { + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + CheckDialect(cfg); + cfg.SetProperty(Environment.DefaultCatalog, "nhibernate"); + cfg.SetProperty(Environment.DefaultSchema, "somethingDifferent"); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2288.AclassWithDefault.hbm.xml", GetType().Assembly); + AssertThatCheckOnTableExistenceIsCorrect(cfg); + } + + [Test] + public void WithSpecificValuesInMapping() + { + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + CheckDialect(cfg); + cfg.SetProperty(Environment.DefaultCatalog, "nhibernate"); + cfg.SetProperty(Environment.DefaultSchema, "somethingDifferent"); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2288.AclassWithSpecific.hbm.xml", GetType().Assembly); + AssertThatCheckOnTableExistenceIsCorrect(cfg); + } + + [Test] + public void WithDefaultValuesInConfigurationPriorityToMapping() + { + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + CheckDialect(cfg); + cfg.SetProperty(Environment.DefaultCatalog, "nhibernate"); + cfg.SetProperty(Environment.DefaultSchema, "somethingDifferent"); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2288.AclassWithDefault.hbm.xml", GetType().Assembly); + AssertThatCheckOnTableExistenceIsCorrect(cfg); + } + } + + public class Aclass + { + public int Id { get; set; } + } + + public class Bclass + { + public int Id { get; set; } + public ICollection Aclasses { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-21 15:00:19 UTC (rev 5198) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-22 16:04:12 UTC (rev 5199) @@ -487,6 +487,7 @@ <Compile Include="NHSpecificTest\NH2279\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2287\Domain.cs" /> <Compile Include="NHSpecificTest\NH2287\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2288\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2293\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2294\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2302\Fixture.cs" /> @@ -2290,6 +2291,9 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithDefault.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithNothing.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithSpecific.hbm.xml" /> <EmbeddedResource Include="TypesTest\XmlDocClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2302\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2303\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |