You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(248) |
May
(82) |
Jun
(90) |
Jul
(177) |
Aug
(253) |
Sep
(157) |
Oct
(151) |
Nov
(143) |
Dec
(278) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(152) |
Feb
(107) |
Mar
(177) |
Apr
(133) |
May
(259) |
Jun
(81) |
Jul
(119) |
Aug
(306) |
Sep
(416) |
Oct
(240) |
Nov
(329) |
Dec
(206) |
2006 |
Jan
(466) |
Feb
(382) |
Mar
(153) |
Apr
(162) |
May
(133) |
Jun
(21) |
Jul
(18) |
Aug
(37) |
Sep
(97) |
Oct
(114) |
Nov
(110) |
Dec
(28) |
2007 |
Jan
(74) |
Feb
(65) |
Mar
(49) |
Apr
(76) |
May
(43) |
Jun
(15) |
Jul
(68) |
Aug
(55) |
Sep
(63) |
Oct
(59) |
Nov
(70) |
Dec
(66) |
2008 |
Jan
(71) |
Feb
(60) |
Mar
(120) |
Apr
(31) |
May
(48) |
Jun
(81) |
Jul
(107) |
Aug
(51) |
Sep
(80) |
Oct
(83) |
Nov
(83) |
Dec
(79) |
2009 |
Jan
(83) |
Feb
(110) |
Mar
(97) |
Apr
(91) |
May
(291) |
Jun
(250) |
Jul
(197) |
Aug
(58) |
Sep
(54) |
Oct
(122) |
Nov
(68) |
Dec
(34) |
2010 |
Jan
(50) |
Feb
(17) |
Mar
(63) |
Apr
(61) |
May
(84) |
Jun
(81) |
Jul
(138) |
Aug
(144) |
Sep
(78) |
Oct
(26) |
Nov
(30) |
Dec
(61) |
2011 |
Jan
(33) |
Feb
(35) |
Mar
(166) |
Apr
(221) |
May
(109) |
Jun
(76) |
Jul
(27) |
Aug
(37) |
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <fab...@us...> - 2009-06-16 14:29:50
|
Revision: 4487 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4487&view=rev Author: fabiomaulo Date: 2009-06-16 14:29:49 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Fix NH-1843 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2009-06-16 14:25:52 UTC (rev 4486) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2009-06-16 14:29:49 UTC (rev 4487) @@ -77,7 +77,7 @@ RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); RegisterColumnType(DbType.Currency, "MONEY"); RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); - RegisterColumnType(DbType.Decimal, 19, "NUMERIC(19, $l)"); + RegisterColumnType(DbType.Decimal, 19, "NUMERIC($p, $s)"); RegisterColumnType(DbType.Double, "DOUBLE"); //The signed range is -32768 to 32767. The unsigned range is 0 to 65535. RegisterColumnType(DbType.Int16, "SMALLINT"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-16 14:25:55
|
Revision: 4486 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4486&view=rev Author: fabiomaulo Date: 2009-06-16 14:25:52 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Minor refactoring Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Action/BulkOperationCleanupAction.cs trunk/nhibernate/src/NHibernate/Action/CollectionAction.cs trunk/nhibernate/src/NHibernate/Action/EntityAction.cs trunk/nhibernate/src/NHibernate/Action/IExecutable.cs trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs Modified: trunk/nhibernate/src/NHibernate/Action/BulkOperationCleanupAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Action/BulkOperationCleanupAction.cs 2009-06-16 05:35:24 UTC (rev 4485) +++ trunk/nhibernate/src/NHibernate/Action/BulkOperationCleanupAction.cs 2009-06-16 14:25:52 UTC (rev 4486) @@ -97,7 +97,7 @@ #region IExecutable Members - public object[] PropertySpaces + public string[] PropertySpaces { get { return spaces.ToArray(); } } Modified: trunk/nhibernate/src/NHibernate/Action/CollectionAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Action/CollectionAction.cs 2009-06-16 05:35:24 UTC (rev 4485) +++ trunk/nhibernate/src/NHibernate/Action/CollectionAction.cs 2009-06-16 14:25:52 UTC (rev 4486) @@ -79,7 +79,7 @@ /// <summary> /// What spaces (tables) are affected by this action? /// </summary> - public object[] PropertySpaces + public string[] PropertySpaces { get { return Persister.CollectionSpaces; } } Modified: trunk/nhibernate/src/NHibernate/Action/EntityAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Action/EntityAction.cs 2009-06-16 05:35:24 UTC (rev 4485) +++ trunk/nhibernate/src/NHibernate/Action/EntityAction.cs 2009-06-16 14:25:52 UTC (rev 4486) @@ -90,7 +90,7 @@ #region IExecutable Members - public object[] PropertySpaces + public string[] PropertySpaces { get { return persister.PropertySpaces; } } Modified: trunk/nhibernate/src/NHibernate/Action/IExecutable.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Action/IExecutable.cs 2009-06-16 05:35:24 UTC (rev 4485) +++ trunk/nhibernate/src/NHibernate/Action/IExecutable.cs 2009-06-16 14:25:52 UTC (rev 4486) @@ -10,7 +10,7 @@ /// <summary> /// What spaces (tables) are affected by this action? /// </summary> - object[] PropertySpaces { get;} + string[] PropertySpaces { get;} /// <summary> Called before executing any actions</summary> void BeforeExecutions(); Modified: trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2009-06-16 05:35:24 UTC (rev 4485) +++ trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2009-06-16 14:25:52 UTC (rev 4486) @@ -228,11 +228,11 @@ get { return (insertions.Count > 0 || deletions.Count > 0); } } - private static bool AreTablesToUpdated(IList executables, ISet<string> tablespaces) + private static bool AreTablesToUpdated(IList executables, ICollection<string> tablespaces) { foreach (IExecutable exec in executables) { - object[] spaces = exec.PropertySpaces; + var spaces = exec.PropertySpaces; foreach (string o in spaces) { if(tablespaces.Contains(o)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-06-16 05:35:27
|
Revision: 4485 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4485&view=rev Author: ayenderahien Date: 2009-06-16 05:35:24 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Changing location of statement log when using hilo so that the logged statement will contain the parameters Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs Modified: trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs 2009-06-16 05:19:27 UTC (rev 4484) +++ trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs 2009-06-16 05:35:24 UTC (rev 4485) @@ -251,13 +251,14 @@ session.Factory.ConnectionProvider.Driver.GenerateCommand(CommandType.Text, updateSql, parameterTypes); ups.Connection = conn; ups.Transaction = transaction; - PersistentIdGeneratorParmsNames.SqlStatementLogger.LogCommand("Updating high value:", ups, FormatStyle.Basic); - + try { columnType.Set(ups, result + 1, 0); columnType.Set(ups, result, 1); + PersistentIdGeneratorParmsNames.SqlStatementLogger.LogCommand("Updating high value:", ups, FormatStyle.Basic); + rows = ups.ExecuteNonQuery(); } catch (Exception e) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-16 05:19:29
|
Revision: 4484 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4484&view=rev Author: fabiomaulo Date: 2009-06-16 05:19:27 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Fix NH-1069 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Collection/AbstractPersistentCollection.cs trunk/nhibernate/src/NHibernate/LazyInitializationException.cs trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/ImproveLazyExceptionFixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Collection/AbstractPersistentCollection.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Collection/AbstractPersistentCollection.cs 2009-06-16 02:43:15 UTC (rev 4483) +++ trunk/nhibernate/src/NHibernate/Collection/AbstractPersistentCollection.cs 2009-06-16 05:19:27 UTC (rev 4484) @@ -478,7 +478,8 @@ private void ThrowLazyInitializationException(string message) { - throw new LazyInitializationException("failed to lazily initialize a collection" + var ownerEntityName = role == null ? "Unavailable" : StringHelper.Qualifier(role); + throw new LazyInitializationException(ownerEntityName, key, "failed to lazily initialize a collection" + (role == null ? "" : " of role: " + role) + ", " + message); } Modified: trunk/nhibernate/src/NHibernate/LazyInitializationException.cs =================================================================== --- trunk/nhibernate/src/NHibernate/LazyInitializationException.cs 2009-06-16 02:43:15 UTC (rev 4483) +++ trunk/nhibernate/src/NHibernate/LazyInitializationException.cs 2009-06-16 05:19:27 UTC (rev 4484) @@ -14,14 +14,31 @@ /// <summary> /// Initializes a new instance of the <see cref="LazyInitializationException"/> class. /// </summary> + /// <param name="entityName">The name of the entity where the exception was thrown</param> + /// <param name="entityId">The id of the entity where the exception was thrown</param> /// <param name="message">The message that describes the error. </param> - public LazyInitializationException(string message) : this(message, null) + public LazyInitializationException(string entityName, object entityId, string message) + : this(string.Format("Initializing[{0}#{1}]-{2}", entityName, entityId, message)) { + EntityName = entityName; + EntityId = entityId; } + public string EntityName { get; private set; } + public object EntityId { get; private set; } + /// <summary> /// Initializes a new instance of the <see cref="LazyInitializationException"/> class. /// </summary> + /// <param name="message">The message that describes the error. </param> + public LazyInitializationException(string message) + : this(message, null) + { + } + + /// <summary> + /// Initializes a new instance of the <see cref="LazyInitializationException"/> class. + /// </summary> /// <param name="innerException"> /// The exception that is the cause of the current exception. If the innerException parameter /// is not a null reference, the current exception is raised in a catch block that handles Modified: trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2009-06-16 02:43:15 UTC (rev 4483) +++ trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2009-06-16 05:19:27 UTC (rev 4484) @@ -55,15 +55,15 @@ { if (_session == null) { - throw new LazyInitializationException("Could not initialize proxy - no Session."); + throw new LazyInitializationException(_entityName, _id, "Could not initialize proxy - no Session."); } else if (!_session.IsOpen) { - throw new LazyInitializationException("Could not initialize proxy - the owning Session was closed."); + throw new LazyInitializationException(_entityName, _id, "Could not initialize proxy - the owning Session was closed."); } else if (!_session.IsConnected) { - throw new LazyInitializationException("Could not initialize proxy - the owning Session is disconnected."); + throw new LazyInitializationException(_entityName, _id, "Could not initialize proxy - the owning Session is disconnected."); } else { @@ -120,7 +120,7 @@ if (value != null && IsConnectedToSession) { //TODO: perhaps this should be some other RuntimeException... - throw new LazyInitializationException("Illegally attempted to associate a proxy with two open Sessions"); + throw new LazyInitializationException(_entityName, _id, "Illegally attempted to associate a proxy with two open Sessions"); } else { Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Domain.cs 2009-06-16 05:19:27 UTC (rev 4484) @@ -0,0 +1,10 @@ +using Iesi.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1069 +{ + public class LazyE + { + public virtual string Name { get; set; } + public virtual ISet<string> LazyC { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/ImproveLazyExceptionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/ImproveLazyExceptionFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/ImproveLazyExceptionFixture.cs 2009-06-16 05:19:27 UTC (rev 4484) @@ -0,0 +1,72 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1069 +{ + [TestFixture] + public class ImproveLazyExceptionFixture: BugTestCase + { + [Test] + public void LazyEntity() + { + object savedId = 1; + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(new LazyE(), 1); + t.Commit(); + } + + LazyE le; + using (ISession s = OpenSession()) + { + le = s.Load<LazyE>(savedId); + } + string n; + var ex = Assert.Throws<LazyInitializationException>(() => n= le.Name); + Assert.That(ex.EntityName, Is.EqualTo(typeof (LazyE).FullName)); + Assert.That(ex.EntityId, Is.EqualTo(1)); + Assert.That(ex.Message, Text.Contains(typeof(LazyE).FullName)); + Assert.That(ex.Message, Text.Contains("#1")); + Console.WriteLine(ex.Message); + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.CreateQuery("delete from LazyE").ExecuteUpdate(); + t.Commit(); + } + } + + [Test] + public void LazyCollection() + { + object savedId=1; + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(new LazyE(), savedId); + t.Commit(); + } + + LazyE le; + using (ISession s = OpenSession()) + { + le = s.Get<LazyE>(savedId); + } + var ex = Assert.Throws<LazyInitializationException>(() => le.LazyC.GetEnumerator()); + Assert.That(ex.EntityName, Is.EqualTo(typeof(LazyE).FullName)); + Assert.That(ex.EntityId, Is.EqualTo(1)); + Assert.That(ex.Message, Text.Contains(typeof(LazyE).FullName)); + Assert.That(ex.Message, Text.Contains("#1")); + Assert.That(ex.Message, Text.Contains(typeof(LazyE).FullName + ".LazyC")); + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.CreateQuery("delete from LazyE").ExecuteUpdate(); + t.Commit(); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1069/Mappings.hbm.xml 2009-06-16 05:19:27 UTC (rev 4484) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1069" + assembly="NHibernate.Test"> + <class name="LazyE"> + <id type="int"/> + <property name="Name"/> + <set name="LazyC"> + <key column="leid"/> + <element column="LValue"/> + </set> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-16 02:43:15 UTC (rev 4483) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-16 05:19:27 UTC (rev 4484) @@ -356,6 +356,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\NH1044\Domain.cs" /> <Compile Include="NHSpecificTest\NH1044\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1069\Domain.cs" /> + <Compile Include="NHSpecificTest\NH1069\ImproveLazyExceptionFixture.cs" /> <Compile Include="NHSpecificTest\NH1092\Domain.cs" /> <Compile Include="NHSpecificTest\NH1092\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1093\Fixture.cs" /> @@ -1914,6 +1916,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1069\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1837\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithSqlType.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithColumnNode.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-16 02:43:16
|
Revision: 4483 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4483&view=rev Author: fabiomaulo Date: 2009-06-16 02:43:15 +0000 (Tue, 16 Jun 2009) Log Message: ----------- removed unused file (sorry) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs Deleted: trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs 2009-06-16 02:40:36 UTC (rev 4482) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs 2009-06-16 02:43:15 UTC (rev 4483) @@ -1,7 +0,0 @@ -namespace NHibernate.Test.EngineTest -{ - public class QueryPlanCacheFixture - { - - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-16 02:40:36 UTC (rev 4482) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-16 02:43:15 UTC (rev 4483) @@ -148,7 +148,6 @@ <Compile Include="Criteria\ProjectionsTest.cs" /> <Compile Include="Criteria\Reptile.cs" /> <Compile Include="DriverTest\SqlClientDriverFixture.cs" /> - <Compile Include="EngineTest\QueryPlanCacheFixture.cs" /> <Compile Include="ExpressionTest\RestrictionsFixture.cs" /> <Compile Include="Criteria\Student.cs" /> <Compile Include="Criteria\StudentDTO.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-16 02:40:38
|
Revision: 4482 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4482&view=rev Author: fabiomaulo Date: 2009-06-16 02:40:36 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Minor refactoring + fix NH-1672 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs Modified: trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2009-06-15 21:59:01 UTC (rev 4481) +++ trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2009-06-16 02:40:36 UTC (rev 4482) @@ -33,7 +33,7 @@ public ParameterMetadata GetSQLParameterMetadata(string query) { - ParameterMetadata metadata = (ParameterMetadata)sqlParamMetadataCache[query]; + var metadata = (ParameterMetadata)sqlParamMetadataCache[query]; if (metadata == null) { // for native-sql queries, the param metadata is determined outside @@ -49,8 +49,8 @@ public HQLQueryPlan GetHQLQueryPlan(string queryString, bool shallow, IDictionary<string, IFilter> enabledFilters) { - HQLQueryPlanKey key = new HQLQueryPlanKey(queryString, shallow, enabledFilters); - HQLQueryPlan plan = (HQLQueryPlan)planCache[key]; + var key = new HQLQueryPlanKey(queryString, shallow, enabledFilters); + var plan = (HQLQueryPlan)planCache[key]; if (plan == null) { @@ -59,6 +59,7 @@ log.Debug("unable to locate HQL query plan in cache; generating (" + queryString + ")"); } plan = new HQLQueryPlan(queryString, shallow, enabledFilters, factory); + planCache.Put(key, plan); } else { @@ -68,23 +69,23 @@ } } - planCache.Put(key, plan); - return plan; } public FilterQueryPlan GetFilterQueryPlan(string filterString, string collectionRole, bool shallow, IDictionary<string, IFilter> enabledFilters) { - FilterQueryPlanKey key = new FilterQueryPlanKey(filterString, collectionRole, shallow, enabledFilters); - FilterQueryPlan plan = (FilterQueryPlan)planCache[key]; + var key = new FilterQueryPlanKey(filterString, collectionRole, shallow, enabledFilters); + var plan = (FilterQueryPlan) planCache[key]; if (plan == null) { if (log.IsDebugEnabled) { - log.Debug("unable to locate collection-filter query plan in cache; generating (" + collectionRole + " : " + filterString + ")"); + log.Debug("unable to locate collection-filter query plan in cache; generating (" + collectionRole + " : " + + filterString + ")"); } plan = new FilterQueryPlan(filterString, collectionRole, shallow, enabledFilters, factory); + planCache.Put(key, plan); } else { @@ -94,14 +95,12 @@ } } - planCache.Put(key, plan); - return plan; } public NativeSQLQueryPlan GetNativeSQLQueryPlan(NativeSQLQuerySpecification spec) { - NativeSQLQueryPlan plan = (NativeSQLQueryPlan)planCache[spec]; + var plan = (NativeSQLQueryPlan)planCache[spec]; if (plan == null) { @@ -110,6 +109,7 @@ log.Debug("unable to locate native-sql query plan in cache; generating (" + spec.QueryString + ")"); } plan = new NativeSQLQueryPlan(spec, factory); + planCache.Put(spec, plan); } else { @@ -119,7 +119,6 @@ } } - planCache.Put(spec, plan); return plan; } @@ -127,7 +126,7 @@ { ParamLocationRecognizer recognizer = ParamLocationRecognizer.ParseLocations(sqlString); - OrdinalParameterDescriptor[] ordinalDescriptors = new OrdinalParameterDescriptor[recognizer.OrdinalParameterLocationList.Count]; + var ordinalDescriptors = new OrdinalParameterDescriptor[recognizer.OrdinalParameterLocationList.Count]; for (int i = 0; i < recognizer.OrdinalParameterLocationList.Count; i++) { int position = recognizer.OrdinalParameterLocationList[i]; @@ -177,12 +176,11 @@ public override bool Equals(object obj) { - if (this == obj) - { - return true; - } + return this == obj || Equals(obj as HQLQueryPlanKey); + } - HQLQueryPlanKey that = obj as HQLQueryPlanKey; + public bool Equals(HQLQueryPlanKey that) + { if (that == null) { return false; @@ -245,17 +243,15 @@ public override bool Equals(object obj) { - if (this == obj) + return this == obj || Equals(obj as FilterQueryPlanKey); + } + + public bool Equals(FilterQueryPlanKey that) + { + if (that == null) { - return true; - } - if (obj == null || GetType() != obj.GetType()) - { return false; } - - FilterQueryPlanKey that = (FilterQueryPlanKey)obj; - if (shallow != that.shallow) { return false; Added: trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/QueryPlanCacheFixture.cs 2009-06-16 02:40:36 UTC (rev 4482) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.EngineTest +{ + public class QueryPlanCacheFixture + { + + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-15 21:59:01 UTC (rev 4481) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-16 02:40:36 UTC (rev 4482) @@ -148,6 +148,7 @@ <Compile Include="Criteria\ProjectionsTest.cs" /> <Compile Include="Criteria\Reptile.cs" /> <Compile Include="DriverTest\SqlClientDriverFixture.cs" /> + <Compile Include="EngineTest\QueryPlanCacheFixture.cs" /> <Compile Include="ExpressionTest\RestrictionsFixture.cs" /> <Compile Include="Criteria\Student.cs" /> <Compile Include="Criteria\StudentDTO.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 21:59:02
|
Revision: 4481 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4481&view=rev Author: fabiomaulo Date: 2009-06-15 21:59:01 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Prevent fooly usage of prepared queries using MsSQL. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs Modified: trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2009-06-15 20:50:43 UTC (rev 4480) +++ trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2009-06-15 21:59:01 UTC (rev 4481) @@ -93,6 +93,8 @@ private const int MaxStringSize = MaxAnsiStringSize / 2; private const int MaxBinaryBlobSize = int.MaxValue; private const int MaxStringClobSize = MaxBinaryBlobSize / 2; + private const byte MaxPrecision = 28; + private const byte MaxScale = 5; private static void SetDefaultParameterSize(IDbDataParameter dbParam, SqlType sqlType) { @@ -113,7 +115,10 @@ dbParam.Size = MaxBinarySize; } break; - + case DbType.Decimal: + dbParam.Precision = MaxPrecision; + dbParam.Scale = MaxScale; + break; case DbType.String: case DbType.StringFixedLength: if (sqlType is StringClobSqlType) Added: trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml 2009-06-15 21:59:01 UTC (rev 4481) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.DriverTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp"/> + <property name="AnsiStringProp" type="AnsiString"/> + <property name="Decimal" type="decimal"/> + <property name="Currency" type="Currency"/> + <property name="Double" column="`Double`" type="Double"/> + <property name="Float" type="Single"/> + <property name="BinaryBlob" type="BinaryBlob"/> + <property name="Binary" type="Byte[]"/> + <property name="StringClob" type="StringClob"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs 2009-06-15 21:59:01 UTC (rev 4481) @@ -0,0 +1,85 @@ +using System.Collections; +using NHibernate.Cfg; +using NHibernate.Dialect; +using NUnit.Framework; +using Environment=NHibernate.Cfg.Environment; + +namespace NHibernate.Test.DriverTest +{ + public class MultiTypeEntity + { + public virtual int Id { get; set; } + public virtual string StringProp { get; set; } + public virtual string AnsiStringProp { get; set; } + public virtual decimal Decimal { get; set; } + public virtual decimal Currency { get; set; } + public virtual double Double { get; set; } + public virtual float Float { get; set; } + public virtual byte[] BinaryBlob { get; set; } + public virtual byte[] Binary { get; set; } + public virtual string StringClob { get; set; } + } + + [TestFixture] + public class SqlClientDriverFixture : TestCase + { + protected override void Configure(Configuration configuration) + { + configuration.SetProperty(Environment.PrepareSql, "true"); + } + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "DriverTest.MultiTypeEntity.hbm.xml" }; } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + + [Test] + public void Crud() + { + // Should use default dimension for CRUD op and prepare_sql='true' because the mapping does not + // have dimensions specified. + object savedId; + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + savedId = s.Save(new MultiTypeEntity + { + StringProp = "a", StringClob = "a",BinaryBlob = new byte[]{1,2,3}, + Binary = new byte[] { 4, 5, 6 }, Currency = 123.4m, Double = 123.5d, + Decimal = 789.5m + }); + t.Commit(); + } + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var m = s.Get<MultiTypeEntity>(savedId); + m.StringProp = "b"; + m.StringClob = "b"; + m.BinaryBlob = new byte[] {4,5,6}; + m.Binary = new byte[] {7,8,9}; + m.Currency = 456.78m; + m.Double = 987.6d; + m.Decimal = 1323456.45m; + t.Commit(); + } + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.CreateQuery("delete from MultiTypeEntity").ExecuteUpdate(); + t.Commit(); + } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-15 20:50:43 UTC (rev 4480) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-15 21:59:01 UTC (rev 4481) @@ -147,6 +147,7 @@ <Compile Include="Criteria\MaterialResource.cs" /> <Compile Include="Criteria\ProjectionsTest.cs" /> <Compile Include="Criteria\Reptile.cs" /> + <Compile Include="DriverTest\SqlClientDriverFixture.cs" /> <Compile Include="ExpressionTest\RestrictionsFixture.cs" /> <Compile Include="Criteria\Student.cs" /> <Compile Include="Criteria\StudentDTO.cs" /> @@ -1911,6 +1912,7 @@ <EmbeddedResource Include="CacheTest\EntityWithFilters.xml" /> <EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" /> <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> + <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="NHSpecificTest\NH1837\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithSqlType.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 20:50:44
|
Revision: 4480 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4480&view=rev Author: fabiomaulo Date: 2009-06-15 20:50:43 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Applied patch for NH-1842 (thanks to Lars Corneliussen) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/CharBooleanType.cs Modified: trunk/nhibernate/src/NHibernate/Type/CharBooleanType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/CharBooleanType.cs 2009-06-15 06:49:59 UTC (rev 4479) +++ trunk/nhibernate/src/NHibernate/Type/CharBooleanType.cs 2009-06-15 20:50:43 UTC (rev 4480) @@ -22,7 +22,7 @@ /// /// </summary> /// <param name="sqlType"></param> - internal CharBooleanType(AnsiStringFixedLengthSqlType sqlType) : base(sqlType) + protected CharBooleanType(AnsiStringFixedLengthSqlType sqlType) : base(sqlType) { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 06:50:02
|
Revision: 4479 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4479&view=rev Author: fabiomaulo Date: 2009-06-15 06:49:59 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Fixed the incompatibility of SqlType (now the SqlClientDrive with prepare_sql should work properly) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-15 06:22:40 UTC (rev 4478) +++ trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-15 06:49:59 UTC (rev 4479) @@ -228,7 +228,7 @@ { throw new MappingException("No type name specified"); } - type = TypeFactory.HeuristicType(typeName, typeParameters); + type = GetHeuristicType(); if (type == null) { string msg = "Could not determine type for: " + typeName; @@ -243,6 +243,29 @@ } } + private IType GetHeuristicType() + { + // NH different behavior + // If the mapping has a type as "Double(10,5)" our SqlType will be created with all information + // including the rigth SqlType specification but when the length/presion/scale was specified + // trough attributes the SqlType is wrong (does not include length/presion/scale specification) + + IType result = null; + if (ColumnSpan == 1 && !columns[0].IsFormula) + { + var col = (Column) columns[0]; + if(col.IsLengthDefined()) + { + result = TypeFactory.BuiltInType(typeName, col.Length); + } + else if(col.IsPrecisionDefined()) + { + result = TypeFactory.BuiltInType(typeName, Convert.ToByte(col.Precision), Convert.ToByte(col.Scale)); + } + } + return result ?? TypeFactory.HeuristicType(typeName, typeParameters); + } + public bool HasFormula { get Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs 2009-06-15 06:22:40 UTC (rev 4478) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs 2009-06-15 06:49:59 UTC (rev 4479) @@ -92,7 +92,7 @@ } } - [TestFixture, Ignore("Not fixed yet.")] + [TestFixture] public class FixtureWithExplicitDefinedType : TypeSqlTypeFixture { protected override string GetResourceName() @@ -101,7 +101,7 @@ } } - [TestFixture, Ignore("Not fixed yet.")] + [TestFixture] public class FixtureWithHeuristicDefinedType : TypeSqlTypeFixture { protected override string GetResourceName() @@ -119,7 +119,7 @@ } } - [TestFixture, Ignore("Not fixed yet.")] + [TestFixture] public class FixtureWithColumnNode : TypeSqlTypeFixture { protected override string GetResourceName() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 06:23:04
|
Revision: 4478 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4478&view=rev Author: fabiomaulo Date: 2009-06-15 06:22:40 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Refactoring : Now the registration of each type should be more consistent. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:52:40 UTC (rev 4477) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 06:22:40 UTC (rev 4478) @@ -78,7 +78,33 @@ private static void RegisterType(System.Type systemType, IType nhibernateType, IEnumerable<string> aliases) { - var typeAliases = new List<string>(aliases) + var typeAliases = new List<string>(aliases); + typeAliases.AddRange(GetClrTypeAliases(systemType)); + + RegisterType(nhibernateType, typeAliases); + } + + private static void RegisterType(System.Type systemType, IType nhibernateType, + IEnumerable<string> aliases, GetNullableTypeWithLength ctorLength) + { + var typeAliases = new List<string>(aliases); + typeAliases.AddRange(GetClrTypeAliases(systemType)); + + RegisterType(nhibernateType, typeAliases, ctorLength); + } + + private static void RegisterType(System.Type systemType, IType nhibernateType, + IEnumerable<string> aliases, GetNullableTypeWithPrecision ctorPrecision) + { + var typeAliases = new List<string>(aliases); + typeAliases.AddRange(GetClrTypeAliases(systemType)); + + RegisterType(nhibernateType, typeAliases, ctorPrecision); + } + + private static IEnumerable<string> GetClrTypeAliases(System.Type systemType) + { + var typeAliases = new List<string> { systemType.FullName, systemType.AssemblyQualifiedName, @@ -90,8 +116,7 @@ typeAliases.Add(nullableType.FullName); typeAliases.Add(nullableType.AssemblyQualifiedName); } - - RegisterType(nhibernateType, typeAliases); + return typeAliases; } private static void RegisterType(IType nhibernateType, IEnumerable<string> aliases) @@ -103,6 +128,26 @@ } } + private static void RegisterType(IType nhibernateType, IEnumerable<string> aliases, GetNullableTypeWithLength ctorLength) + { + var typeAliases = new List<string>(aliases) { nhibernateType.Name }; + foreach (var alias in typeAliases) + { + typeByTypeOfName[alias] = nhibernateType; + getTypeDelegatesWithLength.Add(alias, ctorLength); + } + } + + private static void RegisterType(IType nhibernateType, IEnumerable<string> aliases, GetNullableTypeWithPrecision ctorPrecision) + { + var typeAliases = new List<string>(aliases) { nhibernateType.Name }; + foreach (var alias in typeAliases) + { + typeByTypeOfName[alias] = nhibernateType; + getTypeDelegatesWithPrecision.Add(alias, ctorPrecision); + } + } + /// <summary></summary> static TypeFactory() { @@ -113,10 +158,6 @@ // add the mappings of the NHibernate specific names that are used in type="" RegisterBuiltInTypes(); - - RegisterTypesWithVariableLength(); - - RegisterTypesWithVariablePrecision(); } /// <summary> @@ -128,24 +169,39 @@ private static void RegisterDefaultNetTypes() { // NOTE : each .NET type mut appear only one time - RegisterType(typeof (Byte[]), NHibernateUtil.Binary, new[] {"binary"}); + RegisterType(typeof (Byte[]), NHibernateUtil.Binary, new[] {"binary"}, + l => GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); + RegisterType(typeof(Boolean), NHibernateUtil.Boolean, new[] { "boolean", "bool" }); RegisterType(typeof (Byte), NHibernateUtil.Byte, new[]{ "byte"}); RegisterType(typeof (Char), NHibernateUtil.Character, new[] {"character", "char"}); RegisterType(typeof (CultureInfo), NHibernateUtil.CultureInfo, new[]{ "locale"}); RegisterType(typeof (DateTime), NHibernateUtil.DateTime, new[]{ "datetime"} ); RegisterType(typeof (DateTimeOffset), NHibernateUtil.DateTimeOffset, new[]{ "datetimeoffset"}); - RegisterType(typeof (Decimal), NHibernateUtil.Decimal, new[] {"big_decimal", "decimal"}); - RegisterType(typeof (Double), NHibernateUtil.Double, new[]{ "double"}); + + RegisterType(typeof (Decimal), NHibernateUtil.Decimal, new[] {"big_decimal", "decimal"}, + (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); + + RegisterType(typeof (Double), NHibernateUtil.Double, new[] {"double"}, + (p, s) => GetType(NHibernateUtil.Double, p, s, st => new DoubleType(st))); + RegisterType(typeof (Guid), NHibernateUtil.Guid, new[]{ "guid"}); RegisterType(typeof (Int16), NHibernateUtil.Int16, new[]{ "short"}); RegisterType(typeof (Int32), NHibernateUtil.Int32, new[] {"integer", "int"}); RegisterType(typeof (Int64), NHibernateUtil.Int64, new[]{ "long"}); RegisterType(typeof(SByte), NHibernateUtil.SByte, EmptyAliases); - RegisterType(typeof (Single), NHibernateUtil.Single, new[] {"float", "single"}); - RegisterType(typeof (String), NHibernateUtil.String, new[]{ "string"}); + + RegisterType(typeof (Single), NHibernateUtil.Single, new[] {"float", "single"}, + (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); + + RegisterType(typeof (String), NHibernateUtil.String, new[] {"string"}, + l => GetType(NHibernateUtil.String, l, len => new StringType(SqlTypeFactory.GetString(len)))); + RegisterType(typeof (TimeSpan), NHibernateUtil.TimeSpan, new[] {"timespan"}); - RegisterType(typeof (System.Type), NHibernateUtil.Class, new[] {"class"}); + + RegisterType(typeof (System.Type), NHibernateUtil.Class, new[] {"class"}, + l => GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); + RegisterType(typeof (UInt16), NHibernateUtil.UInt16, new[] {"ushort"}); RegisterType(typeof (UInt32), NHibernateUtil.UInt32, new[] {"uint"}); RegisterType(typeof (UInt64), NHibernateUtil.UInt64, new[] {"ulong"}); @@ -163,10 +219,17 @@ /// </remarks> private static void RegisterBuiltInTypes() { - RegisterType(NHibernateUtil.AnsiString, EmptyAliases); + RegisterType(NHibernateUtil.AnsiString, EmptyAliases, + l => GetType(NHibernateUtil.AnsiString, l, len => new AnsiStringType(SqlTypeFactory.GetAnsiString(len)))); + RegisterType(NHibernateUtil.AnsiChar, EmptyAliases); - RegisterType(NHibernateUtil.BinaryBlob, EmptyAliases); - RegisterType(NHibernateUtil.StringClob, EmptyAliases); + + RegisterType(NHibernateUtil.BinaryBlob, EmptyAliases, + l => GetType(NHibernateUtil.BinaryBlob, l, len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); + + RegisterType(NHibernateUtil.StringClob, EmptyAliases, + l => GetType(NHibernateUtil.StringClob, l, len => new StringClobType(SqlTypeFactory.GetStringClob(len)))); + RegisterType(NHibernateUtil.Date, new[] { "date" }); RegisterType(NHibernateUtil.Timestamp, new[] { "timestamp" }); RegisterType(NHibernateUtil.Time, new[] { "time" }); @@ -174,60 +237,20 @@ RegisterType(NHibernateUtil.YesNo, new[] { "yes_no" }); RegisterType(NHibernateUtil.Ticks, new[] { "ticks" }); RegisterType(NHibernateUtil.TimeAsTimeSpan, EmptyAliases); - RegisterType(NHibernateUtil.Currency, new[] { "currency" }); + + RegisterType(NHibernateUtil.Currency, new[] { "currency" }, + (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); + RegisterType(NHibernateUtil.DateTime2, new[] { "datetime2" }); - RegisterType(NHibernateUtil.Serializable, new[] { "Serializable", "serializable" }); + RegisterType(NHibernateUtil.Serializable, new[] {"Serializable", "serializable"}, + l => + GetType(NHibernateUtil.Serializable, l, + len => new SerializableType(typeof (object), SqlTypeFactory.GetBinary(len)))); } - private static void RegisterTypesWithVariablePrecision() - { - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, - (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, - (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, - (p, s) => GetType(NHibernateUtil.Double, p, s, st => new DoubleType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, - (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); - } - - private static void RegisterTypesWithVariableLength() - { - getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, - l => - GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, - l => - GetType(NHibernateUtil.BinaryBlob, l, - len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, - l => - GetType(NHibernateUtil.Serializable, l, - len => new SerializableType(typeof(object), SqlTypeFactory.GetBinary(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, - l => - GetType(NHibernateUtil.String, l, len => new StringType(SqlTypeFactory.GetString(len)))); - - getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, - l => - GetType(NHibernateUtil.StringClob, l, - len => new StringClobType(SqlTypeFactory.GetStringClob(len)))); - - getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, - l => - GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.AnsiString.Name, - l => - GetType(NHibernateUtil.AnsiString, l, - len => new AnsiStringType(SqlTypeFactory.GetAnsiString(len)))); - } - public ICollectionTypeFactory CollectionTypeFactory { - get - { - return Cfg.Environment.BytecodeProvider.CollectionTypeFactory; - } + get { return Cfg.Environment.BytecodeProvider.CollectionTypeFactory; } } private TypeFactory() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 05:53:40
|
Revision: 4477 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4477&view=rev Author: fabiomaulo Date: 2009-06-15 05:52:40 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Minor (Typo) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:51:19 UTC (rev 4476) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:52:40 UTC (rev 4477) @@ -114,7 +114,7 @@ // add the mappings of the NHibernate specific names that are used in type="" RegisterBuiltInTypes(); - RegisterTypeWithVariableLength(); + RegisterTypesWithVariableLength(); RegisterTypesWithVariablePrecision(); } @@ -191,7 +191,7 @@ (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); } - private static void RegisterTypeWithVariableLength() + private static void RegisterTypesWithVariableLength() { getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, l => This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 05:52:19
|
Revision: 4476 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4476&view=rev Author: fabiomaulo Date: 2009-06-15 05:51:19 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Minor (refactoring NRY) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:17:20 UTC (rev 4475) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:51:19 UTC (rev 4476) @@ -34,6 +34,7 @@ Length, PrecisionScale } + private static readonly string[] EmptyAliases= new string[0]; private static readonly char[] PrecisionScaleSplit = new[] { '(', ')', ',' }; private static readonly char[] LengthSplit = new[] { '(', ')' }; @@ -77,37 +78,28 @@ private static void RegisterType(System.Type systemType, IType nhibernateType, IEnumerable<string> aliases) { - typeByTypeOfName[systemType.FullName] = nhibernateType; - typeByTypeOfName[systemType.AssemblyQualifiedName] = nhibernateType; - typeByTypeOfName[nhibernateType.Name] = nhibernateType; - - if (aliases != null) - { - foreach (var alias in aliases) - { - typeByTypeOfName[alias] = nhibernateType; - } - } - + var typeAliases = new List<string>(aliases) + { + systemType.FullName, + systemType.AssemblyQualifiedName, + }; if (systemType.IsValueType) { // Also register Nullable<systemType> for ValueTypes System.Type nullableType = typeof(Nullable<>).MakeGenericType(systemType); - typeByTypeOfName[nullableType.FullName] = nhibernateType; - typeByTypeOfName[nullableType.AssemblyQualifiedName] = nhibernateType; + typeAliases.Add(nullableType.FullName); + typeAliases.Add(nullableType.AssemblyQualifiedName); } + + RegisterType(nhibernateType, typeAliases); } private static void RegisterType(IType nhibernateType, IEnumerable<string> aliases) { - typeByTypeOfName[nhibernateType.Name] = nhibernateType; - - if (aliases != null) + var typeAliases = new List<string>(aliases) { nhibernateType.Name }; + foreach (var alias in typeAliases) { - foreach (var alias in aliases) - { - typeByTypeOfName[alias] = nhibernateType; - } + typeByTypeOfName[alias] = nhibernateType; } } @@ -149,7 +141,7 @@ RegisterType(typeof (Int16), NHibernateUtil.Int16, new[]{ "short"}); RegisterType(typeof (Int32), NHibernateUtil.Int32, new[] {"integer", "int"}); RegisterType(typeof (Int64), NHibernateUtil.Int64, new[]{ "long"}); - RegisterType(typeof (SByte), NHibernateUtil.SByte, null); + RegisterType(typeof(SByte), NHibernateUtil.SByte, EmptyAliases); RegisterType(typeof (Single), NHibernateUtil.Single, new[] {"float", "single"}); RegisterType(typeof (String), NHibernateUtil.String, new[]{ "string"}); RegisterType(typeof (TimeSpan), NHibernateUtil.TimeSpan, new[] {"timespan"}); @@ -171,17 +163,17 @@ /// </remarks> private static void RegisterBuiltInTypes() { - RegisterType(NHibernateUtil.AnsiString, null); - RegisterType(NHibernateUtil.AnsiChar, null); - RegisterType(NHibernateUtil.BinaryBlob, null); - RegisterType(NHibernateUtil.StringClob, null); + RegisterType(NHibernateUtil.AnsiString, EmptyAliases); + RegisterType(NHibernateUtil.AnsiChar, EmptyAliases); + RegisterType(NHibernateUtil.BinaryBlob, EmptyAliases); + RegisterType(NHibernateUtil.StringClob, EmptyAliases); RegisterType(NHibernateUtil.Date, new[] { "date" }); RegisterType(NHibernateUtil.Timestamp, new[] { "timestamp" }); RegisterType(NHibernateUtil.Time, new[] { "time" }); RegisterType(NHibernateUtil.TrueFalse, new[] { "true_false" }); RegisterType(NHibernateUtil.YesNo, new[] { "yes_no" }); - RegisterType(NHibernateUtil.Ticks, null); - RegisterType(NHibernateUtil.TimeAsTimeSpan, null); + RegisterType(NHibernateUtil.Ticks, new[] { "ticks" }); + RegisterType(NHibernateUtil.TimeAsTimeSpan, EmptyAliases); RegisterType(NHibernateUtil.Currency, new[] { "currency" }); RegisterType(NHibernateUtil.DateTime2, new[] { "datetime2" }); RegisterType(NHibernateUtil.Serializable, new[] { "Serializable", "serializable" }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 05:18:23
|
Revision: 4475 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4475&view=rev Author: fabiomaulo Date: 2009-06-15 05:17:20 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Minor (variable type registration) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:12:25 UTC (rev 4474) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:17:20 UTC (rev 4475) @@ -122,41 +122,9 @@ // add the mappings of the NHibernate specific names that are used in type="" RegisterBuiltInTypes(); - getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, - l => - GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, - l => - GetType(NHibernateUtil.BinaryBlob, l, len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, - l => - GetType(NHibernateUtil.Serializable, l, - len => new SerializableType(typeof (object), SqlTypeFactory.GetBinary(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, - l => - GetType(NHibernateUtil.String, l, len => new StringType(SqlTypeFactory.GetString(len)))); + RegisterTypeWithVariableLength(); - getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, - l => - GetType(NHibernateUtil.StringClob, l, - len => new StringClobType(SqlTypeFactory.GetStringClob(len)))); - - getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, - l => - GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.AnsiString.Name, - l => - GetType(NHibernateUtil.AnsiString, l, len => new AnsiStringType(SqlTypeFactory.GetAnsiString(len)))); - - - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, - (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, - (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, - (p, s) => GetType(NHibernateUtil.Double, p, s, st => new DoubleType(st))); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, - (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); + RegisterTypesWithVariablePrecision(); } /// <summary> @@ -219,6 +187,49 @@ RegisterType(NHibernateUtil.Serializable, new[] { "Serializable", "serializable" }); } + private static void RegisterTypesWithVariablePrecision() + { + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, + (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, + (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, + (p, s) => GetType(NHibernateUtil.Double, p, s, st => new DoubleType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, + (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); + } + + private static void RegisterTypeWithVariableLength() + { + getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, + l => + GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, + l => + GetType(NHibernateUtil.BinaryBlob, l, + len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, + l => + GetType(NHibernateUtil.Serializable, l, + len => new SerializableType(typeof(object), SqlTypeFactory.GetBinary(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, + l => + GetType(NHibernateUtil.String, l, len => new StringType(SqlTypeFactory.GetString(len)))); + + getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, + l => + GetType(NHibernateUtil.StringClob, l, + len => new StringClobType(SqlTypeFactory.GetStringClob(len)))); + + getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, + l => + GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.AnsiString.Name, + l => + GetType(NHibernateUtil.AnsiString, l, + len => new AnsiStringType(SqlTypeFactory.GetAnsiString(len)))); + } + public ICollectionTypeFactory CollectionTypeFactory { get This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 05:12:57
|
Revision: 4474 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4474&view=rev Author: fabiomaulo Date: 2009-06-15 05:12:25 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Refactoring of type registration (hopefully more clear for us) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 03:32:04 UTC (rev 4473) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 05:12:25 UTC (rev 4474) @@ -35,8 +35,8 @@ PrecisionScale } - private static readonly char[] precisionScaleSplit = new char[] { '(', ')', ',' }; - private static readonly char[] lengthSplit = new char[] { '(', ')' }; + private static readonly char[] PrecisionScaleSplit = new[] { '(', ')', ',' }; + private static readonly char[] LengthSplit = new[] { '(', ')' }; private static readonly TypeFactory Instance; private static readonly System.Type[] GenericCollectionSimpleSignature = new[] { typeof(string), typeof(string), typeof(bool) }; @@ -75,15 +75,18 @@ private delegate NullableType NullableTypeCreatorDelegate(SqlType sqlType); - private static void RegisterType(System.Type systemType, IType nhibernateType, string additionalName) + private static void RegisterType(System.Type systemType, IType nhibernateType, IEnumerable<string> aliases) { typeByTypeOfName[systemType.FullName] = nhibernateType; typeByTypeOfName[systemType.AssemblyQualifiedName] = nhibernateType; typeByTypeOfName[nhibernateType.Name] = nhibernateType; - if (additionalName != null) + if (aliases != null) { - typeByTypeOfName[additionalName] = nhibernateType; + foreach (var alias in aliases) + { + typeByTypeOfName[alias] = nhibernateType; + } } if (systemType.IsValueType) @@ -95,87 +98,30 @@ } } + private static void RegisterType(IType nhibernateType, IEnumerable<string> aliases) + { + typeByTypeOfName[nhibernateType.Name] = nhibernateType; + + if (aliases != null) + { + foreach (var alias in aliases) + { + typeByTypeOfName[alias] = nhibernateType; + } + } + } + /// <summary></summary> static TypeFactory() { Instance = new TypeFactory(); - //basicTypes.Add(NHibernate.Blob.Name, NHibernate.Blob); - //basicTypes.Add(NHibernate.Clob.Name, NHibernate.Clob); - - // the Timezone class .NET is not even close to the java.util.Timezone class - in - // .NET all you can do is get the local Timezone - there is no "factory" method to - // get a Timezone by name... - //basicTypes.Add(NHibernate.Timezone.Name, NHibernate.Timezone); - // set up the mappings of .NET Classes/Structs to their NHibernate types. - RegisterType(typeof(Byte[]), NHibernateUtil.Binary, "binary"); - RegisterType(typeof(Boolean), NHibernateUtil.Boolean, "boolean"); - RegisterType(typeof(Byte), NHibernateUtil.Byte, "byte"); - RegisterType(typeof(Char), NHibernateUtil.Character, "character"); - RegisterType(typeof(CultureInfo), NHibernateUtil.CultureInfo, "locale"); - /*registering "datetime" after of "datetime2", - NH will choose "datetime" when no type is specified in the mapping*/ - RegisterType(typeof(DateTime), NHibernateUtil.DateTime2, "datetime2"); - RegisterType(typeof(DateTime), NHibernateUtil.DateTime, "datetime"); - RegisterType(typeof(DateTimeOffset), NHibernateUtil.DateTimeOffset, "datetimeoffset"); - RegisterType(typeof(Decimal), NHibernateUtil.Decimal, "big_decimal"); - RegisterType(typeof(Double), NHibernateUtil.Double, "double"); - RegisterType(typeof(Guid), NHibernateUtil.Guid, "guid"); - RegisterType(typeof(Int16), NHibernateUtil.Int16, "short"); - RegisterType(typeof(Int32), NHibernateUtil.Int32, "integer"); - RegisterType(typeof(Int64), NHibernateUtil.Int64, "long"); - RegisterType(typeof(SByte), NHibernateUtil.SByte, null); - RegisterType(typeof(Single), NHibernateUtil.Single, "float"); - RegisterType(typeof(String), NHibernateUtil.String, "string"); - RegisterType(typeof(TimeSpan), NHibernateUtil.TimeAsTimeSpan, "TimeAsTimeSpan"); - RegisterType(typeof(TimeSpan), NHibernateUtil.TimeSpan,null); - RegisterType(typeof(System.Type), NHibernateUtil.Class, "class"); + RegisterDefaultNetTypes(); - RegisterType(typeof(UInt16), NHibernateUtil.UInt16, null); - RegisterType(typeof(UInt32), NHibernateUtil.UInt32, null); - RegisterType(typeof(UInt64), NHibernateUtil.UInt64, null); - // add the mappings of the NHibernate specific names that are used in type="" - typeByTypeOfName[NHibernateUtil.AnsiString.Name] = NHibernateUtil.AnsiString; - getTypeDelegatesWithLength.Add(NHibernateUtil.AnsiString.Name, GetAnsiStringType); + RegisterBuiltInTypes(); - typeByTypeOfName[NHibernateUtil.AnsiChar.Name] = NHibernateUtil.AnsiChar; - typeByTypeOfName[NHibernateUtil.BinaryBlob.Name] = NHibernateUtil.BinaryBlob; - typeByTypeOfName[NHibernateUtil.StringClob.Name] = NHibernateUtil.StringClob; - typeByTypeOfName[NHibernateUtil.Date.Name] = NHibernateUtil.Date; - typeByTypeOfName[NHibernateUtil.Timestamp.Name] = NHibernateUtil.Timestamp; - typeByTypeOfName[NHibernateUtil.Time.Name] = NHibernateUtil.Time; - typeByTypeOfName[NHibernateUtil.TrueFalse.Name] = NHibernateUtil.TrueFalse; - typeByTypeOfName[NHibernateUtil.YesNo.Name] = NHibernateUtil.YesNo; - typeByTypeOfName[NHibernateUtil.Ticks.Name] = NHibernateUtil.Ticks; - typeByTypeOfName[NHibernateUtil.TimeSpan.Name] = NHibernateUtil.TimeSpan; - typeByTypeOfName[NHibernateUtil.TimeAsTimeSpan.Name] = NHibernateUtil.TimeAsTimeSpan; - typeByTypeOfName[NHibernateUtil.Currency.Name] = NHibernateUtil.Currency; - - // need to do add the key "Serializable" because the hbm files will have a - // type="Serializable", but the SerializableType returns the Name as - // "serializable - System.Object for the default SerializableType. - typeByTypeOfName["Serializable"] = NHibernateUtil.Serializable; - typeByTypeOfName[NHibernateUtil.Serializable.Name] = NHibernateUtil.Serializable; - - // object needs to have both class and serializable setup before it can - // be created. - RegisterType(typeof(Object), NHibernateUtil.Object, "object"); - - // These are in here because needed to NO override default CLR types and be available in mappings - typeByTypeOfName["int"] = NHibernateUtil.Int32; - typeByTypeOfName["date"] = NHibernateUtil.Date; - typeByTypeOfName["time"] = NHibernateUtil.Time; - typeByTypeOfName["timestamp"] = NHibernateUtil.Timestamp; - typeByTypeOfName["decimal"] = NHibernateUtil.Decimal; - typeByTypeOfName["currency"] = NHibernateUtil.Currency; - - typeByTypeOfName["serializable"] = NHibernateUtil.Serializable; - typeByTypeOfName["true_false"] = NHibernateUtil.TrueFalse; - typeByTypeOfName["yes_no"] = NHibernateUtil.YesNo; - - getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, l => GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); @@ -198,6 +144,9 @@ getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, l => GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.AnsiString.Name, + l => + GetType(NHibernateUtil.AnsiString, l, len => new AnsiStringType(SqlTypeFactory.GetAnsiString(len)))); getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, @@ -210,6 +159,66 @@ (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); } + /// <summary> + /// Register other Default .NET type + /// </summary> + /// <remarks> + /// These type will be used, as default, even when the "type" attribute was NOT specified in the mapping + /// </remarks> + private static void RegisterDefaultNetTypes() + { + // NOTE : each .NET type mut appear only one time + RegisterType(typeof (Byte[]), NHibernateUtil.Binary, new[] {"binary"}); + RegisterType(typeof(Boolean), NHibernateUtil.Boolean, new[] { "boolean", "bool" }); + RegisterType(typeof (Byte), NHibernateUtil.Byte, new[]{ "byte"}); + RegisterType(typeof (Char), NHibernateUtil.Character, new[] {"character", "char"}); + RegisterType(typeof (CultureInfo), NHibernateUtil.CultureInfo, new[]{ "locale"}); + RegisterType(typeof (DateTime), NHibernateUtil.DateTime, new[]{ "datetime"} ); + RegisterType(typeof (DateTimeOffset), NHibernateUtil.DateTimeOffset, new[]{ "datetimeoffset"}); + RegisterType(typeof (Decimal), NHibernateUtil.Decimal, new[] {"big_decimal", "decimal"}); + RegisterType(typeof (Double), NHibernateUtil.Double, new[]{ "double"}); + RegisterType(typeof (Guid), NHibernateUtil.Guid, new[]{ "guid"}); + RegisterType(typeof (Int16), NHibernateUtil.Int16, new[]{ "short"}); + RegisterType(typeof (Int32), NHibernateUtil.Int32, new[] {"integer", "int"}); + RegisterType(typeof (Int64), NHibernateUtil.Int64, new[]{ "long"}); + RegisterType(typeof (SByte), NHibernateUtil.SByte, null); + RegisterType(typeof (Single), NHibernateUtil.Single, new[] {"float", "single"}); + RegisterType(typeof (String), NHibernateUtil.String, new[]{ "string"}); + RegisterType(typeof (TimeSpan), NHibernateUtil.TimeSpan, new[] {"timespan"}); + RegisterType(typeof (System.Type), NHibernateUtil.Class, new[] {"class"}); + RegisterType(typeof (UInt16), NHibernateUtil.UInt16, new[] {"ushort"}); + RegisterType(typeof (UInt32), NHibernateUtil.UInt32, new[] {"uint"}); + RegisterType(typeof (UInt64), NHibernateUtil.UInt64, new[] {"ulong"}); + // object needs to have both class and serializable setup before it can + // be created. + RegisterType(typeof (Object), NHibernateUtil.Object, new[] {"object"}); + } + + /// <summary> + /// Register other NO Default .NET type + /// </summary> + /// <remarks> + /// These type will be used only when the "type" attribute was is specified in the mapping. + /// These are in here because needed to NO override default CLR types and be available in mappings + /// </remarks> + private static void RegisterBuiltInTypes() + { + RegisterType(NHibernateUtil.AnsiString, null); + RegisterType(NHibernateUtil.AnsiChar, null); + RegisterType(NHibernateUtil.BinaryBlob, null); + RegisterType(NHibernateUtil.StringClob, null); + RegisterType(NHibernateUtil.Date, new[] { "date" }); + RegisterType(NHibernateUtil.Timestamp, new[] { "timestamp" }); + RegisterType(NHibernateUtil.Time, new[] { "time" }); + RegisterType(NHibernateUtil.TrueFalse, new[] { "true_false" }); + RegisterType(NHibernateUtil.YesNo, new[] { "yes_no" }); + RegisterType(NHibernateUtil.Ticks, null); + RegisterType(NHibernateUtil.TimeAsTimeSpan, null); + RegisterType(NHibernateUtil.Currency, new[] { "currency" }); + RegisterType(NHibernateUtil.DateTime2, new[] { "datetime2" }); + RegisterType(NHibernateUtil.Serializable, new[] { "Serializable", "serializable" }); + } + public ICollectionTypeFactory CollectionTypeFactory { get @@ -302,7 +311,7 @@ { //precision/scale based - string[] parsedName = name.Split(precisionScaleSplit); + string[] parsedName = name.Split(PrecisionScaleSplit); if (parsedName.Length < 4) { throw new ArgumentOutOfRangeException("TypeClassification.PrecisionScale", name, @@ -313,19 +322,13 @@ byte precision = Byte.Parse(parsedName[1].Trim()); byte scale = Byte.Parse(parsedName[2].Trim()); - GetNullableTypeWithPrecision precisionDelegate; - if (!getTypeDelegatesWithPrecision.TryGetValue(typeName, out precisionDelegate)) - { - return null; - } - - return precisionDelegate(precision, scale); + return BuiltInType(typeName, precision, scale); } else if (typeClassification == TypeClassification.Length) { //length based - string[] parsedName = name.Split(lengthSplit); + string[] parsedName = name.Split(LengthSplit); if (parsedName.Length < 3) { throw new ArgumentOutOfRangeException("TypeClassification.Length", name, "It is not a valid Length name"); @@ -334,14 +337,7 @@ typeName = parsedName[0].Trim(); int length = Int32.Parse(parsedName[1].Trim()); - GetNullableTypeWithLength lengthDelegate; - - if (!getTypeDelegatesWithLength.TryGetValue(typeName, out lengthDelegate)) - { - // we were not able to find a delegate to get the Type - return null; - } - return lengthDelegate(length); + return BuiltInType(typeName, length); } else @@ -354,6 +350,21 @@ } } + internal static IType BuiltInType(string typeName, int length) + { + GetNullableTypeWithLength lengthDelegate; + + return !getTypeDelegatesWithLength.TryGetValue(typeName, out lengthDelegate) ? null : lengthDelegate(length); + } + + internal static IType BuiltInType(string typeName, byte precision, byte scale) + { + GetNullableTypeWithPrecision precisionDelegate; + return !getTypeDelegatesWithPrecision.TryGetValue(typeName, out precisionDelegate) + ? null + : precisionDelegate(precision, scale); + } + private static void AddToTypeOfName(string key, IType type) { typeByTypeOfName.Add(key, type); @@ -416,10 +427,10 @@ TypeClassification typeClassification = GetTypeClassification(typeName); if (typeClassification == TypeClassification.Length) { - parsedTypeName = typeName.Split(lengthSplit); + parsedTypeName = typeName.Split(LengthSplit); } else - parsedTypeName = typeClassification == TypeClassification.PrecisionScale ? typeName.Split(precisionScaleSplit) : new string[] { typeName }; + parsedTypeName = typeClassification == TypeClassification.PrecisionScale ? typeName.Split(PrecisionScaleSplit) : new[] { typeName }; System.Type typeClass; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 03:32:05
|
Revision: 4473 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4473&view=rev Author: fabiomaulo Date: 2009-06-15 03:32:04 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Minor refactoring Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/Column.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/Column.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/Column.cs 2009-06-15 03:14:55 UTC (rev 4472) +++ trunk/nhibernate/src/NHibernate/Mapping/Column.cs 2009-06-15 03:32:04 UTC (rev 4473) @@ -412,16 +412,21 @@ return quoted ? '`' + name + '`' : name; } - private bool IsCaracteristicsDefined() + public bool IsCaracteristicsDefined() { - return length.HasValue || precision.HasValue || scale.HasValue; + return IsLengthDefined() || IsPrecisionDefined(); } - private bool IsPrecisionDefined() + public bool IsPrecisionDefined() { return precision.HasValue || scale.HasValue; } + public bool IsLengthDefined() + { + return length.HasValue; + } + #region ICloneable Members /// <summary> Shallow copy, the value is not copied</summary> public object Clone() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-15 03:14:56
|
Revision: 4472 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4472&view=rev Author: fabiomaulo Date: 2009-06-15 03:14:55 +0000 (Mon, 15 Jun 2009) Log Message: ----------- Unreported bug fix Modified Paths: -------------- trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-14 23:28:27 UTC (rev 4471) +++ trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-15 03:14:55 UTC (rev 4472) @@ -85,6 +85,11 @@ return GetTypeWithLen<StringSqlType>(length, l => new StringSqlType(l)); } + public static StringClobSqlType GetStringClob(int length) + { + return GetTypeWithLen<StringClobSqlType>(length, l => new StringClobSqlType(l)); + } + [MethodImpl(MethodImplOptions.Synchronized)] public static SqlType GetSqlType(DbType dbType, byte precision, byte scale) { Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 23:28:27 UTC (rev 4471) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-15 03:14:55 UTC (rev 4472) @@ -182,11 +182,24 @@ getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, l => GetType(NHibernateUtil.BinaryBlob, l, len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); - getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, GetSerializableType); - getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, GetStringType); - getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, GetStringType); - getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, GetTypeType); + getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, + l => + GetType(NHibernateUtil.Serializable, l, + len => new SerializableType(typeof (object), SqlTypeFactory.GetBinary(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, + l => + GetType(NHibernateUtil.String, l, len => new StringType(SqlTypeFactory.GetString(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, + l => + GetType(NHibernateUtil.StringClob, l, + len => new StringClobType(SqlTypeFactory.GetStringClob(len)))); + + getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, + l => + GetType(NHibernateUtil.Class, l, len => new TypeType(SqlTypeFactory.GetString(len)))); + + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 23:29:27
|
Revision: 4471 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4471&view=rev Author: fabiomaulo Date: 2009-06-14 23:28:27 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Fix NH-1835 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs 2009-06-14 21:09:52 UTC (rev 4470) +++ trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs 2009-06-14 23:28:27 UTC (rev 4471) @@ -15,6 +15,7 @@ public class BinaryBlobType : BinaryType { internal BinaryBlobType(): base(new BinaryBlobSqlType()) {} + internal BinaryBlobType(BinarySqlType sqlType) : base(sqlType) {} /// <summary></summary> public override string Name Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 21:09:52 UTC (rev 4470) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 23:28:27 UTC (rev 4471) @@ -69,7 +69,7 @@ private static readonly IDictionary<string, GetNullableTypeWithPrecision> getTypeDelegatesWithPrecision = new ThreadSafeDictionary<string, GetNullableTypeWithPrecision>(new Dictionary<string, GetNullableTypeWithPrecision>()); - private delegate NullableType GetNullableTypeWithLength(int length); + private delegate NullableType GetNullableTypeWithLength(int length); // Func<int, NullableType> private delegate NullableType GetNullableTypeWithPrecision(byte precision, byte scale); @@ -176,8 +176,12 @@ typeByTypeOfName["yes_no"] = NHibernateUtil.YesNo; - getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, GetBinaryType); - getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, GetBinaryType); + getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, + l => + GetType(NHibernateUtil.Binary, l, len => new BinaryType(SqlTypeFactory.GetBinary(len)))); + getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, + l => + GetType(NHibernateUtil.BinaryBlob, l, len => new BinaryBlobType(SqlTypeFactory.GetBinaryBlob(len)))); getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, GetSerializableType); getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, GetStringType); getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, GetStringType); @@ -520,6 +524,19 @@ return (NullableType)returnType; } + private static NullableType GetType(NullableType defaultUnqualifiedType, int length, GetNullableTypeWithLength ctorDelegate) + { + string key = GetKeyForLengthBased(defaultUnqualifiedType.Name, length); + IType returnType; + if (!typeByTypeOfName.TryGetValue(key, out returnType)) + { + returnType = ctorDelegate(length); + AddToTypeOfNameWithLength(key, returnType); + } + + return (NullableType)returnType; + } + private static NullableType GetType(NullableType defaultUnqualifiedType, byte precision, byte scale, NullableTypeCreatorDelegate ctor) { string key = GetKeyForPrecisionScaleBased(defaultUnqualifiedType.Name, precision, scale); Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Fixture.cs 2009-06-14 21:09:52 UTC (rev 4470) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Fixture.cs 2009-06-14 23:28:27 UTC (rev 4471) @@ -1,16 +1,17 @@ using NUnit.Framework; +using NHibernate.SqlTypes; namespace NHibernate.Test.NHSpecificTest.NH1835 { [TestFixture] public class Fixture: BugTestCase { - [Test, Ignore("Not fixed yet.")] + [Test] public void ColumnTypeBinaryBlob() { var pc = sessions.GetEntityPersister(typeof (Document).FullName); var type = pc.GetPropertyType("Contents"); - Assert.That(type.SqlTypes(sessions)[0].Length, Is.EqualTo(3000)); + Assert.That(type.SqlTypes(sessions)[0], Is.InstanceOf<BinaryBlobSqlType>()); } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Mappings.hbm.xml 2009-06-14 21:09:52 UTC (rev 4470) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1835/Mappings.hbm.xml 2009-06-14 23:28:27 UTC (rev 4471) @@ -7,8 +7,6 @@ <id name="Id"> <generator class="guid.comb" /> </id> - <property name="Contents"> - <column name="Contents" sql-type="varbinary(3000)"/> - </property> + <property name="Contents" type="BinaryBlob(3000)"/> </class> </hibernate-mapping> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 21:10:43
|
Revision: 4470 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4470&view=rev Author: fabiomaulo Date: 2009-06-14 21:09:52 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-14 21:01:41 UTC (rev 4469) +++ trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-14 21:09:52 UTC (rev 4470) @@ -351,6 +351,7 @@ column.Value = this; column.TypeIndex = columns.Count - 1; + type = null; // invalidate type } public virtual void AddFormula(Formula formula) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 21:03:16
|
Revision: 4469 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4469&view=rev Author: fabiomaulo Date: 2009-06-14 21:01:41 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Refactoring with Breaking Change BRAKING CHANGE: - see IParameterizedType Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs trunk/nhibernate/src/NHibernate/Type/CustomType.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate/UserTypes/IParameterizedType.cs trunk/nhibernate/src/NHibernate.Test/TypeParameters/DefaultValueIntegerType.cs trunk/nhibernate/src/NHibernate.Test/UserCollection/Parameterized/DefaultableListType.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/releasenotes.txt 2009-06-14 21:01:41 UTC (rev 4469) @@ -31,6 +31,7 @@ * Obsolete ORACLE dialects was removed (new implementations are available) * ISQLExceptionConverter was changed in order to have more flexibility about information available for the conversion and followed management. * ADOException now use string instead SqlString + * IParameterizedType is using IDictionary<string, string> Build 2.1.0.Beta1 (rev4424) ============================= Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -1231,7 +1231,7 @@ { IType type; - IDictionary parameters = null; + IDictionary<string, string> parameters = null; XmlAttribute typeAttribute = node.Attributes["type"]; if (typeAttribute == null) @@ -1246,7 +1246,7 @@ return null; XmlAttribute nameAttribute = typeNode.Attributes["name"]; //we know it exists because the schema validate it typeName = nameAttribute.Value; - parameters = new Hashtable(); + parameters = new Dictionary<string, string>(); foreach (XmlNode childNode in typeNode.ChildNodes) parameters.Add(childNode.Attributes["name"].Value, childNode.InnerText.Trim()); Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -88,7 +88,7 @@ typeName = returnScalarSchema.type; } - IType type = TypeFactory.HeuristicType(typeName, (IDictionary) parameters); + IType type = TypeFactory.HeuristicType(typeName, parameters); if (type == null) throw new MappingException("could not interpret type: " + returnScalarSchema.type); Modified: trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -228,7 +228,7 @@ { throw new MappingException("No type name specified"); } - type = TypeFactory.HeuristicType(typeName, (IDictionary)typeParameters); + type = TypeFactory.HeuristicType(typeName, typeParameters); if (type == null) { string msg = "Could not determine type for: " + typeName; Modified: trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -7,6 +7,7 @@ using NHibernate.Engine; using NHibernate.SqlTypes; using NHibernate.UserTypes; +using System.Collections.Generic; namespace NHibernate.Type { @@ -19,7 +20,7 @@ private readonly ICompositeUserType userType; private readonly string name; - public CompositeCustomType(System.Type userTypeClass, IDictionary parameters) + public CompositeCustomType(System.Type userTypeClass, IDictionary<string, string> parameters) { name = userTypeClass.FullName; Modified: trunk/nhibernate/src/NHibernate/Type/CustomType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/CustomType.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Type/CustomType.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -8,6 +8,7 @@ using NHibernate.SqlTypes; using NHibernate.UserTypes; using NHibernate.Util; +using System.Collections.Generic; namespace NHibernate.Type { @@ -28,7 +29,7 @@ get { return userType; } } - public CustomType(System.Type userTypeClass, IDictionary parameters) + public CustomType(System.Type userTypeClass, IDictionary<string, string> parameters) { name = userTypeClass.Name; Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -363,7 +363,6 @@ return name + "(" + precision + ", " + scale + ")"; } - /// <summary> /// Uses heuristics to deduce a NHibernate type given a string naming the /// type. @@ -390,7 +389,7 @@ /// <param name="typeName">the type name</param> /// <param name="parameters">parameters for the type</param> /// <returns>An instance of <c>NHibernate.Type.IType</c></returns> - public static IType HeuristicType(string typeName, IDictionary parameters) + public static IType HeuristicType(string typeName, IDictionary<string, string> parameters) { IType type = Basic(typeName); @@ -1089,16 +1088,16 @@ CustomCollectionType result = new CustomCollectionType(typeClass, role, propertyRef, embedded); if (typeParameters != null) { - InjectParameters(result.UserType, (IDictionary)typeParameters); + InjectParameters(result.UserType, typeParameters); } return result; } - public static void InjectParameters(Object type, IDictionary parameters) + public static void InjectParameters(Object type, IDictionary<string, string> parameters) { if (type is IParameterizedType) { - ((IParameterizedType)type).SetParameterValues(parameters); + ((IParameterizedType) type).SetParameterValues(parameters); } else if (parameters != null && !(parameters.Count == 0)) { Modified: trunk/nhibernate/src/NHibernate/UserTypes/IParameterizedType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/UserTypes/IParameterizedType.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate/UserTypes/IParameterizedType.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -1,5 +1,4 @@ -using System; -using System.Collections; +using System.Collections.Generic; namespace NHibernate.UserTypes { @@ -14,6 +13,6 @@ /// Gets called by Hibernate to pass the configured type parameters to /// the implementation. /// </summary> - void SetParameterValues(IDictionary parameters); + void SetParameterValues(IDictionary<string, string> parameters); } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/TypeParameters/DefaultValueIntegerType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypeParameters/DefaultValueIntegerType.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate.Test/TypeParameters/DefaultValueIntegerType.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -1,9 +1,9 @@ using System; -using System.Collections; using System.Data; using NHibernate.SqlTypes; using NHibernate.Type; using NHibernate.UserTypes; +using System.Collections.Generic; namespace NHibernate.Test.TypeParameters { @@ -12,9 +12,9 @@ private int defaultValue; private static NullableType _int32Type = NHibernateUtil.Int32; - public void SetParameterValues(IDictionary parameters) + public void SetParameterValues(IDictionary<string, string> parameters) { - defaultValue = int.Parse((string) parameters["default"]); + defaultValue = int.Parse(parameters["default"]); } #region IUserType Members Modified: trunk/nhibernate/src/NHibernate.Test/UserCollection/Parameterized/DefaultableListType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/UserCollection/Parameterized/DefaultableListType.cs 2009-06-14 19:51:40 UTC (rev 4468) +++ trunk/nhibernate/src/NHibernate.Test/UserCollection/Parameterized/DefaultableListType.cs 2009-06-14 21:01:41 UTC (rev 4469) @@ -4,6 +4,7 @@ using NHibernate.Persister.Collection; using NHibernate.UserTypes; using System; +using System.Collections.Generic; namespace NHibernate.Test.UserCollection.Parameterized { @@ -68,9 +69,9 @@ #region Implementation of IParameterizedType - public void SetParameterValues(IDictionary parameters) + public void SetParameterValues(IDictionary<string, string> parameters) { - defaultValue = parameters["default"] as string; + defaultValue = parameters["default"]; } #endregion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 19:51:45
|
Revision: 4468 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4468&view=rev Author: fabiomaulo Date: 2009-06-14 19:51:40 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/Column.cs trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/Column.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/Column.cs 2009-06-14 18:25:16 UTC (rev 4467) +++ trunk/nhibernate/src/NHibernate/Mapping/Column.cs 2009-06-14 19:51:40 UTC (rev 4468) @@ -389,20 +389,20 @@ public SqlType GetSqlTypeCode(IMapping mapping) { - IType _type = Value.Type; + IType type = Value.Type; try { - SqlType _sqlTypeCode = _type.SqlTypes(mapping)[TypeIndex]; - if (SqlTypeCode != null && SqlTypeCode != _sqlTypeCode) + SqlType sqltc = type.SqlTypes(mapping)[TypeIndex]; + if (SqlTypeCode != null && SqlTypeCode != sqltc) { - throw new MappingException(string.Format("SQLType code's does not match. mapped as {0} but is {1}", sqlTypeCode, SqlTypeCode)); + throw new MappingException(string.Format("SQLType code's does not match. mapped as {0} but is {1}", sqltc, SqlTypeCode)); } - return _sqlTypeCode; + return sqltc; } catch (Exception e) { throw new MappingException(string.Format("Could not determine type for column {0} of type {1}: {2}", - name, _type.GetType().FullName, e.GetType().FullName), e); + name, type.GetType().FullName, e.GetType().FullName), e); } } Modified: trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-14 18:25:16 UTC (rev 4467) +++ trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-14 19:51:40 UTC (rev 4468) @@ -1,6 +1,7 @@ using System; using System.Data; using System.Collections.Generic; +using System.Runtime.CompilerServices; using NHibernate.Util; namespace NHibernate.SqlTypes @@ -84,6 +85,7 @@ return GetTypeWithLen<StringSqlType>(length, l => new StringSqlType(l)); } + [MethodImpl(MethodImplOptions.Synchronized)] public static SqlType GetSqlType(DbType dbType, byte precision, byte scale) { return GetTypeWithPrecision(dbType, precision, scale); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 18:25:18
|
Revision: 4467 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4467&view=rev Author: fabiomaulo Date: 2009-06-14 18:25:16 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Fix TypeFactory bugs after tests Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/DoubleType.cs trunk/nhibernate/src/NHibernate/Type/SingleType.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs Modified: trunk/nhibernate/src/NHibernate/Type/DoubleType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/DoubleType.cs 2009-06-14 18:17:12 UTC (rev 4466) +++ trunk/nhibernate/src/NHibernate/Type/DoubleType.cs 2009-06-14 18:25:16 UTC (rev 4467) @@ -16,6 +16,8 @@ { } + internal DoubleType(SqlType sqlType) : base(sqlType) {} + /// <summary> /// /// </summary> Modified: trunk/nhibernate/src/NHibernate/Type/SingleType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/SingleType.cs 2009-06-14 18:17:12 UTC (rev 4466) +++ trunk/nhibernate/src/NHibernate/Type/SingleType.cs 2009-06-14 18:25:16 UTC (rev 4467) @@ -20,6 +20,8 @@ { } + internal SingleType(SqlType sqlType) : base(sqlType) {} + /// <summary></summary> public override string Name { Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 18:17:12 UTC (rev 4466) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 18:25:16 UTC (rev 4467) @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Data; using System.Globalization; using System.Reflection; using NHibernate.Bytecode; @@ -74,6 +73,8 @@ private delegate NullableType GetNullableTypeWithPrecision(byte precision, byte scale); + private delegate NullableType NullableTypeCreatorDelegate(SqlType sqlType); + private static void RegisterType(System.Type systemType, IType nhibernateType, string additionalName) { typeByTypeOfName[systemType.FullName] = nhibernateType; @@ -182,10 +183,14 @@ getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, GetStringType); getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, GetTypeType); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, GetDecimalType); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, GetDecimalType); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, GetDecimalType); - getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, GetDecimalType); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, + (p, s) => GetType(NHibernateUtil.Decimal, p, s, st => new DecimalType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, + (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, + (p, s) => GetType(NHibernateUtil.Double, p, s, st => new DoubleType(st))); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, + (p, s) => GetType(NHibernateUtil.Single, p, s, st => new SingleType(st))); } public ICollectionTypeFactory CollectionTypeFactory @@ -516,14 +521,13 @@ return (NullableType)returnType; } - [MethodImpl(MethodImplOptions.Synchronized)] - public static NullableType GetDecimalType(byte precision, byte scale) + private static NullableType GetType(NullableType defaultUnqualifiedType, byte precision, byte scale, NullableTypeCreatorDelegate ctor) { - string key = GetKeyForPrecisionScaleBased(NHibernateUtil.Decimal.Name, precision, scale); + string key = GetKeyForPrecisionScaleBased(defaultUnqualifiedType.Name, precision, scale); IType returnType; if (!typeByTypeOfName.TryGetValue(key, out returnType)) { - returnType = new DecimalType(SqlTypeFactory.GetSqlType(DbType.Decimal, precision, scale)); + returnType = ctor(SqlTypeFactory.GetSqlType(defaultUnqualifiedType.SqlType.DbType, precision, scale)); AddToTypeOfNameWithPrecision(key, returnType); } Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2009-06-14 18:17:12 UTC (rev 4466) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2009-06-14 18:25:16 UTC (rev 4467) @@ -111,5 +111,32 @@ log.DebugFormat("{0} calls", totalCall); } + [Test] + public void HoldQualifiedTypes() + { + var decimalType = TypeFactory.Basic("Decimal(10,5)"); + var doubleType = TypeFactory.Basic("Double(10,5)"); + var singleType = TypeFactory.Basic("Single(10,5)"); + var currencyType = TypeFactory.Basic("Currency(10,5)"); + + Assert.That(decimalType, Is.SameAs(TypeFactory.Basic("Decimal(10,5)"))); + Assert.That(decimalType, Is.Not.SameAs(doubleType)); + Assert.That(decimalType, Is.Not.SameAs(singleType)); + Assert.That(decimalType, Is.Not.SameAs(currencyType)); + Assert.That(decimalType, Is.Not.SameAs(TypeFactory.Basic("Decimal(11,5)"))); + + Assert.That(doubleType, Is.SameAs(TypeFactory.Basic("Double(10,5)"))); + Assert.That(doubleType, Is.Not.SameAs(TypeFactory.Basic("Double(11,5)"))); + Assert.That(doubleType, Is.Not.SameAs(singleType)); + Assert.That(doubleType, Is.Not.SameAs(currencyType)); + + Assert.That(singleType, Is.Not.SameAs(currencyType)); + + Assert.That(currencyType, Is.SameAs(TypeFactory.Basic("Currency(10,5)"))); + Assert.That(currencyType, Is.Not.SameAs(TypeFactory.Basic("Currency(11,5)"))); + + Assert.That(singleType, Is.SameAs(TypeFactory.Basic("Single(10,5)"))); + Assert.That(singleType, Is.Not.SameAs(TypeFactory.Basic("Single(11,5)"))); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2009-06-14 18:17:14
|
Revision: 4466 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4466&view=rev Author: tehlike Date: 2009-06-14 18:17:12 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Adding tests for NH-1837 (already fixed in rev 4461) Revision Links: -------------- http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4461&view=rev Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Customer.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Order.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Customer.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Customer.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Customer.cs 2009-06-14 18:17:12 UTC (rev 4466) @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1837 +{ + public class Customer + { + public Customer() + { + this.Orders = new List<Order>(); + } + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual IList<Order> Orders { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Fixture.cs 2009-06-14 18:17:12 UTC (rev 4466) @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1837 +{ + [TestFixture] + public class Fixture:BugTestCase + { + protected override void OnSetUp() + { + sessions.Statistics.IsStatisticsEnabled = true; + using(ISession session=this.OpenSession()) + using(ITransaction tran=session.BeginTransaction()) + { + var customer = new Customer {Name = "Fabio Maulo"}; + var order = new Order {Date = DateTime.Now, Customer = customer}; + customer.Orders.Add(order); + session.Save(customer); + session.Save(order); + tran.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession session = this.OpenSession()) + using (ITransaction tran = session.BeginTransaction()) + { + session.Delete("from Order"); + session.Delete("from Customer"); + tran.Commit(); + } + } + [Test] + public void ExecutesOneQueryWithUniqueResultWithChildCriteriaNonGeneric() + { + + sessions.Statistics.Clear(); + using (ISession session = this.OpenSession()) + { + var criteria = session.CreateCriteria(typeof(Order),"o"); + criteria.CreateCriteria("o.Customer", "c") + .Add(Restrictions.Eq("c.Id", 1)) + .SetProjection(Projections.RowCount()) + .UniqueResult(); + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + } + } + [Test] + public void ExecutesOneQueryWithUniqueResultWithChildCriteriaGeneric() + { + sessions.Statistics.Clear(); + using (ISession session = this.OpenSession()) + { + session.CreateCriteria(typeof (Order), "o") + .CreateCriteria("o.Customer", "c") + .Add(Restrictions.Eq("c.Id", 1)) + .SetProjection(Projections.RowCount()) + .UniqueResult<int>(); + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + } + } + [Test] + public void ExecutesOneQueryWithUniqueResultWithCriteriaNonGeneric() + { + sessions.Statistics.Clear(); + using (ISession session = this.OpenSession()) + { + session.CreateCriteria(typeof (Order), "o") + .SetProjection(Projections.RowCount()) + .UniqueResult(); + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + } + } + + [Test] + public void ExecutesOneQueryWithUniqueResultWithCriteriaGeneric() + { + sessions.Statistics.Clear(); + using (ISession session = this.OpenSession()) + { + session.CreateCriteria(typeof (Order), "o") + .SetProjection(Projections.RowCount()) + .UniqueResult<int>(); + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Mappings.hbm.xml 2009-06-14 18:17:12 UTC (rev 4466) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1837" + default-lazy="false"> + + <class name="Customer"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Name"/> + <bag name="Orders" lazy="true"> + <key column="CustomerId" /> + <one-to-many class="Order" /> + </bag> + </class> + <class name="Order" table="`Order`"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Date"/> + <many-to-one name="Customer" class="Customer" column="CustomerId"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Order.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Order.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Order.cs 2009-06-14 18:17:12 UTC (rev 4466) @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1837 +{ + public class Order + { + public int Id { get; set; } + public DateTime Date { get; set; } + public Customer Customer { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 17:35:23 UTC (rev 4465) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 18:17:12 UTC (rev 4466) @@ -507,6 +507,9 @@ <Compile Include="NHSpecificTest\NH1834\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1835\Document.cs" /> <Compile Include="NHSpecificTest\NH1835\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1837\Customer.cs" /> + <Compile Include="NHSpecificTest\NH1837\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1837\Order.cs" /> <Compile Include="NHSpecificTest\NH645\HQLFunctionFixture.cs" /> <Compile Include="HQL\HQLFunctions.cs" /> <Compile Include="HQL\Human.cs" /> @@ -1909,6 +1912,7 @@ <EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" /> <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1837\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithSqlType.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithColumnNode.hbm.xml" /> <EmbeddedResource Include="TypesTest\MultiTypeEntity_InLine.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 17:35:29
|
Revision: 4465 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4465&view=rev Author: fabiomaulo Date: 2009-06-14 17:35:23 +0000 (Sun, 14 Jun 2009) Log Message: ----------- - Refactoring SqlTypeFactory - Added BinaryBlob to SqlTypeFactory Modified Paths: -------------- trunk/nhibernate/src/NHibernate/SqlTypes/BinaryBlobSqlType.cs trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/SqlTest/SqlTypeFactoryFixture.cs Modified: trunk/nhibernate/src/NHibernate/SqlTypes/BinaryBlobSqlType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlTypes/BinaryBlobSqlType.cs 2009-06-14 16:43:55 UTC (rev 4464) +++ trunk/nhibernate/src/NHibernate/SqlTypes/BinaryBlobSqlType.cs 2009-06-14 17:35:23 UTC (rev 4465) @@ -23,11 +23,7 @@ [Serializable] public class BinaryBlobSqlType : BinarySqlType { - /// <summary> - /// Initializes a new instance of the <see cref="BinaryBlobSqlType"/> class. - /// </summary> - public BinaryBlobSqlType() : base() - { - } + public BinaryBlobSqlType(int length) : base(length) {} + public BinaryBlobSqlType() {} } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-14 16:43:55 UTC (rev 4464) +++ trunk/nhibernate/src/NHibernate/SqlTypes/SqlTypeFactory.cs 2009-06-14 17:35:23 UTC (rev 4465) @@ -52,6 +52,18 @@ return (T) result; } + private static SqlType GetTypeWithPrecision(DbType dbType, byte precision, byte scale) + { + string key = GetKeyForPrecisionScaleBased(dbType.ToString(), precision, scale); + SqlType result; + if (!SqlTypes.TryGetValue(key, out result)) + { + result = new SqlType(dbType, precision, scale); + SqlTypes.Add(key, result); + } + return result; + } + public static AnsiStringSqlType GetAnsiString(int length) { return GetTypeWithLen<AnsiStringSqlType>(length, l => new AnsiStringSqlType(l)); @@ -62,14 +74,19 @@ return GetTypeWithLen<BinarySqlType>(length, l => new BinarySqlType(l)); } + public static BinaryBlobSqlType GetBinaryBlob(int length) + { + return GetTypeWithLen<BinaryBlobSqlType>(length, l => new BinaryBlobSqlType(l)); + } + public static StringSqlType GetString(int length) { return GetTypeWithLen<StringSqlType>(length, l => new StringSqlType(l)); } - public static SqlType GetDecimal(byte precision, byte scale) + public static SqlType GetSqlType(DbType dbType, byte precision, byte scale) { - return new SqlType(DbType.Decimal, precision, scale); + return GetTypeWithPrecision(dbType, precision, scale); } private static string GetKeyForLengthBased(string name, int length) Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 16:43:55 UTC (rev 4464) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 17:35:23 UTC (rev 4465) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Data; using System.Globalization; using System.Reflection; using NHibernate.Bytecode; @@ -522,7 +523,7 @@ IType returnType; if (!typeByTypeOfName.TryGetValue(key, out returnType)) { - returnType = new DecimalType(SqlTypeFactory.GetDecimal(precision, scale)); + returnType = new DecimalType(SqlTypeFactory.GetSqlType(DbType.Decimal, precision, scale)); AddToTypeOfNameWithPrecision(key, returnType); } Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 16:43:55 UTC (rev 4464) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 17:35:23 UTC (rev 4465) @@ -1161,6 +1161,7 @@ <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> <Compile Include="SqlTest\Custom\Oracle\OracleCustomSQLFixture.cs" /> + <Compile Include="SqlTest\SqlTypeFactoryFixture.cs" /> <Compile Include="Stateless\Naturalness.cs" /> <Compile Include="Stateless\StatelessWithRelationsFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/SqlTest/SqlTypeFactoryFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SqlTest/SqlTypeFactoryFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/SqlTest/SqlTypeFactoryFixture.cs 2009-06-14 17:35:23 UTC (rev 4465) @@ -0,0 +1,20 @@ +using System.Data; +using NHibernate.SqlTypes; +using NUnit.Framework; + +namespace NHibernate.Test.SqlTest +{ + [TestFixture] + public class SqlTypeFactoryFixture + { + [Test] + [Description("Should cache constructed types")] + public void GetSqlTypeWithPrecisionScale() + { + var st = SqlTypeFactory.GetSqlType(DbType.Decimal, 10, 2); + Assert.That(st, Is.SameAs(SqlTypeFactory.GetSqlType(DbType.Decimal, 10, 2))); + Assert.That(st, Is.Not.SameAs(SqlTypeFactory.GetSqlType(DbType.Decimal, 10, 1))); + Assert.That(st, Is.Not.SameAs(SqlTypeFactory.GetSqlType(DbType.Double, 10, 2))); + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 16:43:57
|
Revision: 4464 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4464&view=rev Author: fabiomaulo Date: 2009-06-14 16:43:55 +0000 (Sun, 14 Jun 2009) Log Message: ----------- - SqlType refactoring - TypeFactory unreported bugs fix - Tests to fix the ugly bugs about SqlType Modified Paths: -------------- trunk/nhibernate/src/NHibernate/SqlTypes/SqlType.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Defined.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Heuristic.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_InLine.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithColumnNode.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithSqlType.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs Modified: trunk/nhibernate/src/NHibernate/SqlTypes/SqlType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlTypes/SqlType.cs 2009-06-14 13:09:23 UTC (rev 4463) +++ trunk/nhibernate/src/NHibernate/SqlTypes/SqlType.cs 2009-06-14 16:43:55 UTC (rev 4464) @@ -22,64 +22,61 @@ [Serializable] public class SqlType { - private DbType _dbType; - private int _length; - private byte _precision; - private byte _scale; + private readonly DbType dbType; + private readonly int length; + private readonly byte precision; + private readonly byte scale; + private readonly bool lengthDefined; + private readonly bool precisionDefined; - // false by default - private bool _lengthDefined; - // false by default - private bool _precisionDefined; - public SqlType(DbType dbType) { - _dbType = dbType; + this.dbType = dbType; } public SqlType(DbType dbType, int length) { - _dbType = dbType; - _length = length; - _lengthDefined = true; + this.dbType = dbType; + this.length = length; + lengthDefined = true; } public SqlType(DbType dbType, byte precision, byte scale) { - _dbType = dbType; - _precision = precision; - _scale = scale; - _precisionDefined = true; + this.dbType = dbType; + this.precision = precision; + this.scale = scale; + precisionDefined = true; } public DbType DbType { - get { return _dbType; } + get { return dbType; } } public int Length { - get { return _length; } + get { return length; } } public byte Precision { - get { return _precision; } + get { return precision; } } public byte Scale { - get { return _scale; } + get { return scale; } } public bool LengthDefined { - get { return _lengthDefined; } + get { return lengthDefined; } } public bool PrecisionDefined { - get { return _precisionDefined; } + get { return precisionDefined; } } #region System.Object Members @@ -88,7 +85,7 @@ { unchecked { - int hashCode = 0; + int hashCode; if (LengthDefined) { @@ -109,40 +106,25 @@ public override bool Equals(object obj) { - SqlType rhsSqlType; + return obj == this || Equals(obj as SqlType); + } - // Step1: Perform an equals test - if (obj == this) - { - return true; - } - - // Step 2: Instance of check - rhsSqlType = obj as SqlType; + public bool Equals(SqlType rhsSqlType) + { if (rhsSqlType == null) { return false; } - //Step 3: Check each important field - bool equals = false; if (LengthDefined) { - equals = (DbType.Equals(rhsSqlType.DbType)) - && (Length == rhsSqlType.Length); + return (DbType.Equals(rhsSqlType.DbType)) && (Length == rhsSqlType.Length); } - else if (PrecisionDefined) + if (PrecisionDefined) { - equals = (DbType.Equals(rhsSqlType.DbType)) - && (Precision == rhsSqlType.Precision) - && (Scale == rhsSqlType.Scale); + return (DbType.Equals(rhsSqlType.DbType)) && (Precision == rhsSqlType.Precision) && (Scale == rhsSqlType.Scale); } - else - { - equals = (DbType.Equals(rhsSqlType.DbType)); - } - - return equals; + return (DbType.Equals(rhsSqlType.DbType)); } public override string ToString() @@ -153,7 +135,7 @@ return DbType.ToString(); } - StringBuilder result = new StringBuilder(DbType.ToString()); + var result = new StringBuilder(DbType.ToString()); if (LengthDefined) { Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 13:09:23 UTC (rev 4463) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-06-14 16:43:55 UTC (rev 4464) @@ -175,11 +175,16 @@ getTypeDelegatesWithLength.Add(NHibernateUtil.Binary.Name, GetBinaryType); + getTypeDelegatesWithLength.Add(NHibernateUtil.BinaryBlob.Name, GetBinaryType); getTypeDelegatesWithLength.Add(NHibernateUtil.Serializable.Name, GetSerializableType); getTypeDelegatesWithLength.Add(NHibernateUtil.String.Name, GetStringType); + getTypeDelegatesWithLength.Add(NHibernateUtil.StringClob.Name, GetStringType); getTypeDelegatesWithLength.Add(NHibernateUtil.Class.Name, GetTypeType); getTypeDelegatesWithPrecision.Add(NHibernateUtil.Decimal.Name, GetDecimalType); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Currency.Name, GetDecimalType); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Double.Name, GetDecimalType); + getTypeDelegatesWithPrecision.Add(NHibernateUtil.Single.Name, GetDecimalType); } public ICollectionTypeFactory CollectionTypeFactory Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 13:09:23 UTC (rev 4463) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-14 16:43:55 UTC (rev 4464) @@ -1290,6 +1290,7 @@ <Compile Include="TypesTest\TimestampTypeFixture.cs" /> <Compile Include="TypesTest\TypeFactoryFixture.cs" /> <Compile Include="TypesTest\TypeFixtureBase.cs" /> + <Compile Include="TypesTest\TypeSqlTypeFixture.cs" /> <Compile Include="Unconstrained\Employee.cs" /> <Compile Include="Unconstrained\Person.cs" /> <Compile Include="Unconstrained\SimplyA.cs" /> @@ -1907,6 +1908,11 @@ <EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" /> <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithSqlType.hbm.xml" /> + <EmbeddedResource Include="TypesTest\MultiTypeEntity_WithColumnNode.hbm.xml" /> + <EmbeddedResource Include="TypesTest\MultiTypeEntity_InLine.hbm.xml" /> + <EmbeddedResource Include="TypesTest\MultiTypeEntity_Heuristic.hbm.xml" /> + <EmbeddedResource Include="TypesTest\MultiTypeEntity_Defined.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1835\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1834\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1821\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Defined.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Defined.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Defined.hbm.xml 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.TypesTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp" type="string" length="100" /> + <property name="AnsiStringProp" type="AnsiString" length="101" /> + <property name="Decimal" type="decimal" precision="5" scale="2"/> + <property name="Currency" type="Currency" precision="10" scale="3"/> + <property name="Double" type="Double" precision="11" scale="4"/> + <property name="Float" type="Single" precision="6" scale="3"/> + <property name="BinaryBlob" type="BinaryBlob" length="1000"/> + <property name="Binary" type="Byte[]" length="1001"/> + <property name="StringClob" type="StringClob" length="1002"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Heuristic.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Heuristic.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_Heuristic.hbm.xml 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.TypesTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp" length="100" /> + <property name="AnsiStringProp" length="101" /> + <property name="Decimal" precision="5" scale="2"/> + <property name="Currency" precision="10" scale="3"/> + <property name="Double" precision="11" scale="4"/> + <property name="Float" precision="6" scale="3"/> + <property name="BinaryBlob" length="1000"/> + <property name="Binary" length="1001"/> + <property name="StringClob" length="1002"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_InLine.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_InLine.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_InLine.hbm.xml 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.TypesTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp" type="String(100)"/> + <property name="AnsiStringProp" type="String(101)"/> + <property name="Decimal" type="Decimal(5,2)"/> + <property name="Currency" type="Currency(10,3)"/> + <property name="Double" type="Double(11,4)"/> + <property name="Float" type="Single(6,3)"/> + <property name="BinaryBlob" type="BinaryBlob(1000)"/> + <property name="Binary" type="Byte[](1001)"/> + <property name="StringClob" type="StringClob(1002)"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithColumnNode.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithColumnNode.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithColumnNode.hbm.xml 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.TypesTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp" type="string" > + <column name="StringProp" length="100"/> + </property> + <property name="AnsiStringProp" type="string" > + <column name="AnsiStringProp" length="101"/> + </property> + <property name="Decimal" type="Decimal" > + <column name="Decimal" precision="5" scale="2"/> + </property> + <property name="Currency" type="Currency" > + <column name="Currency" precision="10" scale="3"/> + </property> + <property name="Double" type="Double" > + <column name="Double" precision="11" scale="4"/> + </property> + <property name="Float" type="Single" > + <column name="Float" precision="6" scale="3"/> + </property> + <property name="BinaryBlob" type="BinaryBlob"> + <column name="BinaryBlob" length="1000"/> + </property> + <property name="Binary" type="Byte[]"> + <column name="Binary" length="1001"/> + </property> + <property name="StringClob" type="StringClob"> + <column name="StringClob" length="1002"/> + </property> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithSqlType.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithSqlType.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/MultiTypeEntity_WithSqlType.hbm.xml 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.TypesTest" + assembly="NHibernate.Test"> + + <class name="MultiTypeEntity"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="StringProp" > + <column name="StringProp" sql-type="varchar(100)"/> + </property> + <property name="AnsiStringProp"> + <column name="AnsiStringProp" sql-type="char(101)"/> + </property> + <property name="Decimal"> + <column name="Decimal" sql-type="decimal(5,2)"/> + </property> + <property name="Currency" > + <column name="Currency" sql-type="decimal(10,3)"/> + </property> + <property name="Double" > + <column name="Double" sql-type="float(11,4)"/> + </property> + <property name="Float" type="Single" > + <column name="Float" sql-type="float(6,3)"/> + </property> + <property name="BinaryBlob" type="BinaryBlob" > + <column name="BinaryBlob" sql-type="varbinary(1000)"/> + </property> + <property name="Binary" type="Byte[]" > + <column name="Binary" sql-type="varbinary(1001)"/> + </property> + <property name="StringClob" type="StringClob"> + <column name="StringClob" sql-type="varchar(1002)"/> + </property> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeSqlTypeFixture.cs 2009-06-14 16:43:55 UTC (rev 4464) @@ -0,0 +1,144 @@ +using NHibernate.Cfg; +using NHibernate.Dialect; +using NHibernate.Engine; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + public class MultiTypeEntity + { + public virtual int Id { get; set; } + public virtual string StringProp { get; set; } + public virtual string AnsiStringProp { get; set; } + public virtual decimal Decimal { get; set; } + public virtual decimal Currency { get; set; } + public virtual double Double { get; set; } + public virtual float Float { get; set; } + public virtual byte[] BinaryBlob { get; set; } + public virtual byte[] Binary { get; set; } + public virtual string StringClob { get; set; } + } + + public abstract class TypeSqlTypeFixture + { + protected const string TestNameSpace = "NHibernate.Test.TypesTest."; + protected Configuration cfg; + protected ISessionFactoryImplementor factory; + + [TestFixtureSetUp] + public void Config() + { + cfg = new Configuration(); + if (TestConfigurationHelper.hibernateConfigFile != null) + cfg.Configure(TestConfigurationHelper.hibernateConfigFile); + Dialect.Dialect dialect = Dialect.Dialect.GetDialect(cfg.Properties); + if (!AppliesTo(dialect)) + { + Assert.Ignore(GetType() + " does not apply to " + dialect); + } + + cfg.AddResource(GetResourceFullName(), GetType().Assembly); + + factory = (ISessionFactoryImplementor) cfg.BuildSessionFactory(); + } + + protected virtual bool AppliesTo(Dialect.Dialect dialect) + { + return true; + } + + [Test] + public void NotIgnoreSqlTypeDef() + { + var pc = factory.GetEntityPersister(typeof(MultiTypeEntity).FullName); + + var type = pc.GetPropertyType("StringProp"); + Assert.That(type.SqlTypes(factory)[0].Length, Is.EqualTo(100)); + + type = pc.GetPropertyType("AnsiStringProp"); + Assert.That(type.SqlTypes(factory)[0].Length, Is.EqualTo(101)); + + type = pc.GetPropertyType("Decimal"); + Assert.That(type.SqlTypes(factory)[0].Precision, Is.EqualTo(5)); + Assert.That(type.SqlTypes(factory)[0].Scale, Is.EqualTo(2)); + + type = pc.GetPropertyType("Currency"); + Assert.That(type.SqlTypes(factory)[0].Precision, Is.EqualTo(10)); + Assert.That(type.SqlTypes(factory)[0].Scale, Is.EqualTo(3)); + + type = pc.GetPropertyType("Double"); + Assert.That(type.SqlTypes(factory)[0].Precision, Is.EqualTo(11)); + Assert.That(type.SqlTypes(factory)[0].Scale, Is.EqualTo(4)); + + type = pc.GetPropertyType("Float"); + Assert.That(type.SqlTypes(factory)[0].Precision, Is.EqualTo(6)); + Assert.That(type.SqlTypes(factory)[0].Scale, Is.EqualTo(3)); + + type = pc.GetPropertyType("BinaryBlob"); + Assert.That(type.SqlTypes(factory)[0].Length, Is.EqualTo(1000)); + + type = pc.GetPropertyType("Binary"); + Assert.That(type.SqlTypes(factory)[0].Length, Is.EqualTo(1001)); + + type = pc.GetPropertyType("StringClob"); + Assert.That(type.SqlTypes(factory)[0].Length, Is.EqualTo(1002)); + } + + protected abstract string GetResourceName(); + + private string GetResourceFullName() + { + return TestNameSpace + GetResourceName(); + } + } + + [TestFixture, Ignore("Not fixed yet.")] + public class FixtureWithExplicitDefinedType : TypeSqlTypeFixture + { + protected override string GetResourceName() + { + return "MultiTypeEntity_Defined.hbm.xml"; + } + } + + [TestFixture, Ignore("Not fixed yet.")] + public class FixtureWithHeuristicDefinedType : TypeSqlTypeFixture + { + protected override string GetResourceName() + { + return "MultiTypeEntity_Heuristic.hbm.xml"; + } + } + + [TestFixture] + public class FixtureWithInLineDefinedType : TypeSqlTypeFixture + { + protected override string GetResourceName() + { + return "MultiTypeEntity_InLine.hbm.xml"; + } + } + + [TestFixture, Ignore("Not fixed yet.")] + public class FixtureWithColumnNode : TypeSqlTypeFixture + { + protected override string GetResourceName() + { + return "MultiTypeEntity_WithColumnNode.hbm.xml"; + } + } + + + [TestFixture, Ignore("Not fixed yet.")] + public class FixtureWithSqlType : TypeSqlTypeFixture + { + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + protected override string GetResourceName() + { + return "MultiTypeEntity_WithSqlType.hbm.xml"; + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-06-14 13:09:24
|
Revision: 4463 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4463&view=rev Author: fabiomaulo Date: 2009-06-14 13:09:23 +0000 (Sun, 14 Jun 2009) Log Message: ----------- Fix wrong sql type Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs Modified: trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs 2009-06-14 13:06:55 UTC (rev 4462) +++ trunk/nhibernate/src/NHibernate/Type/BinaryBlobType.cs 2009-06-14 13:09:23 UTC (rev 4463) @@ -1,4 +1,5 @@ using System; +using NHibernate.SqlTypes; namespace NHibernate.Type { @@ -13,6 +14,8 @@ [Serializable] public class BinaryBlobType : BinaryType { + internal BinaryBlobType(): base(new BinaryBlobSqlType()) {} + /// <summary></summary> public override string Name { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |