From: <fab...@us...> - 2009-02-07 16:44:12
|
Revision: 4066 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4066&view=rev Author: fabiomaulo Date: 2009-02-07 16:44:07 +0000 (Sat, 07 Feb 2009) Log Message: ----------- Fix NH-1665 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs trunk/nhibernate/src/NHibernate/Util/StringHelper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/UtilityTest/StringHelperFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/MyEntity.cs Modified: trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs 2009-02-07 04:59:58 UTC (rev 4065) +++ trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs 2009-02-07 16:44:07 UTC (rev 4066) @@ -68,7 +68,10 @@ /// <param name="dialect">The <see cref="Dialect.Dialect"/> to help with Configuration.</param> public virtual void Configure(IType type, IDictionary<string, string> parms, Dialect.Dialect dialect) { - sequenceName = PropertiesHelper.GetString(Sequence, parms, "hibernate_sequence"); + var nativeSequenceName = PropertiesHelper.GetString(Sequence, parms, "hibernate_sequence"); + nativeSequenceName = StringHelper.Unqualify(nativeSequenceName); + nativeSequenceName = StringHelper.PurgeBackticksEnclosing(nativeSequenceName); + sequenceName = dialect.QuoteForTableName(nativeSequenceName); string schemaName; string catalogName; parms.TryGetValue(Parameters, out parameters); Modified: trunk/nhibernate/src/NHibernate/Util/StringHelper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-02-07 04:59:58 UTC (rev 4065) +++ trunk/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-02-07 16:44:07 UTC (rev 4066) @@ -708,5 +708,19 @@ { return str == null ? null : str.ToLowerInvariant(); } + + public static bool IsBackticksEnclosed(string identifier) + { + return !string.IsNullOrEmpty(identifier) && identifier.StartsWith("`") && identifier.EndsWith("`"); + } + + public static string PurgeBackticksEnclosing(string identifier) + { + if (IsBackticksEnclosed(identifier)) + { + return identifier.Substring(1, identifier.Length - 2); + } + return identifier; + } } } Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665 ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Fixture.cs 2009-02-07 16:44:07 UTC (rev 4066) @@ -0,0 +1,28 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1665 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect.SupportsSequences; + } + + [Test] + public void SupportsHibernateQuotingSequenceName() + { + ISession session = OpenSession(); + session.BeginTransaction(); + + var e = new MyEntity { Name = "entity-1" }; + session.Save(e); + Assert.AreEqual(1, (int)session.GetIdentifier(e)); + + session.Delete(e); + session.Transaction.Commit(); + session.Close(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/Mappings.hbm.xml 2009-02-07 16:44:07 UTC (rev 4066) @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1665" + default-access="backfield"> + + <class name="MyEntity"> + <id type="int"> + <generator class="sequence"> + <param name="sequence">`Emp_Seq`</param> + </generator> + </id> + <property name="Name"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/MyEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/MyEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1665/MyEntity.cs 2009-02-07 16:44:07 UTC (rev 4066) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1665 +{ + public class MyEntity + { + public virtual string Name { 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 2009-02-07 04:59:58 UTC (rev 4065) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-07 16:44:07 UTC (rev 4066) @@ -414,6 +414,8 @@ <Compile Include="NHSpecificTest\NH1289\PurchaseItem.cs" /> <Compile Include="NHSpecificTest\NH1289\PurchaseOrder.cs" /> <Compile Include="NHSpecificTest\NH1289\WorkflowItem.cs" /> + <Compile Include="NHSpecificTest\NH1665\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1665\MyEntity.cs" /> <Compile Include="NHSpecificTest\NH1443\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1521\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1549\CategoryWithInheritedId.cs" /> @@ -1650,6 +1652,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1665\Mappings.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\ByTrigger\MyEntity.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\Identity\MyEntityIdentity.hbm.xml" /> <EmbeddedResource Include="SessionFactoryTest\Item.hbm.xml" /> Modified: trunk/nhibernate/src/NHibernate.Test/UtilityTest/StringHelperFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/UtilityTest/StringHelperFixture.cs 2009-02-07 04:59:58 UTC (rev 4065) +++ trunk/nhibernate/src/NHibernate.Test/UtilityTest/StringHelperFixture.cs 2009-02-07 16:44:07 UTC (rev 4066) @@ -2,6 +2,7 @@ using System.Collections.Generic; using NHibernate.Util; using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; namespace NHibernate.Test.UtilityTest { @@ -120,5 +121,22 @@ Assert.AreEqual(expected, StringHelper.GetClassname(typeName)); } + [Test] + public void IsBackticksEnclosed() + { + Assert.That(!StringHelper.IsBackticksEnclosed(null)); + Assert.That(!StringHelper.IsBackticksEnclosed("`something")); + Assert.That(!StringHelper.IsBackticksEnclosed("something`")); + Assert.That(StringHelper.IsBackticksEnclosed("`something`")); + } + + [Test] + public void PurgeBackticksEnclosing() + { + Assert.That(StringHelper.PurgeBackticksEnclosing(null), Is.Null); + Assert.That(StringHelper.PurgeBackticksEnclosing("`something"), Is.EqualTo("`something")); + Assert.That(StringHelper.PurgeBackticksEnclosing("something`"), Is.EqualTo("something`")); + Assert.That(StringHelper.PurgeBackticksEnclosing("`something`"), Is.EqualTo("something")); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |