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