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...> - 2010-08-09 11:41:51
|
Revision: 5130 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5130&view=rev Author: fabiomaulo Date: 2010-08-09 11:41:40 +0000 (Mon, 09 Aug 2010) Log Message: ----------- Fixed TYPO Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs trunk/nhibernate/src/NHibernate/AssertionFailure.cs trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs trunk/nhibernate/src/NHibernate/Cfg/Environment.cs trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs trunk/nhibernate/src/NHibernate/Engine/Cascade.cs trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs trunk/nhibernate/src/NHibernate/Engine/Collections.cs trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs trunk/nhibernate/src/NHibernate/Engine/Versioning.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs trunk/nhibernate/src/NHibernate/Event/Default/ReattachVisitor.cs trunk/nhibernate/src/NHibernate/Event/Default/WrapVisitor.cs trunk/nhibernate/src/NHibernate/Exceptions/SQLExceptionConverterFactory.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/ErrorCounter.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableUpdateExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DotNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementFactory.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromReferenceNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/MethodNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/QueryNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/LiteralProcessor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/PathHelper.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs trunk/nhibernate/src/NHibernate/Hql/Classic/QueryTranslator.cs trunk/nhibernate/src/NHibernate/Hql/QuerySplitter.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/OptimizerFactory.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/SequenceStructure.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/SequenceStyleGenerator.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/TableStructure.cs trunk/nhibernate/src/NHibernate/Id/IdentifierGeneratorFactory.cs trunk/nhibernate/src/NHibernate/Id/IncrementGenerator.cs trunk/nhibernate/src/NHibernate/Id/NativeGuidGenerator.cs trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs trunk/nhibernate/src/NHibernate/Id/SequenceHiLoGenerator.cs trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs trunk/nhibernate/src/NHibernate/Id/TableHiLoGenerator.cs trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/EnumerableImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Impl/Printer.cs trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs trunk/nhibernate/src/NHibernate/Impl/SessionFactoryObjectFactory.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate/LazyInitializationException.cs trunk/nhibernate/src/NHibernate/Linq/Functions/LinqToHqlGeneratorsRegistryFactory.cs trunk/nhibernate/src/NHibernate/Loader/Collection/BasicCollectionLoader.cs trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyLoader.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaJoinWalker.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs trunk/nhibernate/src/NHibernate/Loader/Custom/Sql/SQLCustomQuery.cs trunk/nhibernate/src/NHibernate/Loader/Custom/Sql/SQLQueryReturnProcessor.cs trunk/nhibernate/src/NHibernate/Loader/Entity/AbstractEntityLoader.cs trunk/nhibernate/src/NHibernate/Loader/Entity/CollectionElementLoader.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate/Logging.cs trunk/nhibernate/src/NHibernate/Mapping/RootClass.cs trunk/nhibernate/src/NHibernate/NonUniqueResultException.cs trunk/nhibernate/src/NHibernate/Persister/Collection/AbstractCollectionPersister.cs trunk/nhibernate/src/NHibernate/Persister/Collection/NamedQueryCollectionInitializer.cs trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate/Persister/Entity/NamedQueryLoader.cs trunk/nhibernate/src/NHibernate/SqlCommand/InsertSelect.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlDeleteBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlInsertBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlSelectBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlUpdateBuilder.cs trunk/nhibernate/src/NHibernate/Stat/StatisticsImpl.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/DatabaseMetadata.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaExport.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaUpdate.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaValidator.cs trunk/nhibernate/src/NHibernate/Transaction/AdoNetTransactionFactory.cs trunk/nhibernate/src/NHibernate/Transaction/AdoNetWithDistributedTransactionFactory.cs trunk/nhibernate/src/NHibernate/Transaction/AdoTransaction.cs trunk/nhibernate/src/NHibernate/Transform/DistinctRootEntityResultTransformer.cs trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/DynamicMapEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/EntityMetamodel.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/PocoEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/PocoInstantiator.cs trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs trunk/nhibernate/src/NHibernate/Type/CustomType.cs trunk/nhibernate/src/NHibernate/Type/DbTimestampType.cs trunk/nhibernate/src/NHibernate/Type/NullableType.cs trunk/nhibernate/src/NHibernate/Util/ADOExceptionReporter.cs trunk/nhibernate/src/NHibernate/Util/IdentityMap.cs trunk/nhibernate/src/NHibernate/Util/JoinedEnumerable.cs trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Logging/LoggerProviderTest.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/Logging/LogggerProviderTest.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -21,7 +21,7 @@ /// </summary> public abstract class AbstractBatcher : IBatcher { - protected static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractBatcher)); + protected static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractBatcher)); private static int openCommandCount; private static int openReaderCount; Modified: trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -17,7 +17,7 @@ [Serializable] public class ConnectionManager : ISerializable, IDeserializationCallback { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionManager)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionManager)); public interface Callback { Modified: trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -8,7 +8,7 @@ /// <summary> Centralize logging handling for SQL statements. </summary> public class SqlStatementLogger { - private static readonly ILogger log = LogggerProvider.LoggerFor("NHibernate.SQL"); + private static readonly ILogger log = LoggerProvider.LoggerFor("NHibernate.SQL"); /// <summary> Constructs a new SqlStatementLogger instance.</summary> public SqlStatementLogger() : this(false, false) { } Modified: trunk/nhibernate/src/NHibernate/AssertionFailure.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AssertionFailure.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/AssertionFailure.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -17,7 +17,7 @@ /// </summary> public AssertionFailure() : base(String.Empty) { - LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage); + LoggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage); } /// <summary> @@ -26,7 +26,7 @@ /// <param name="message">The message that describes the error. </param> public AssertionFailure(string message) : base(message) { - LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, this); + LoggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, this); } /// <summary> @@ -40,7 +40,7 @@ /// </param> public AssertionFailure(string message, Exception innerException) : base(message, innerException) { - LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, innerException); + LoggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, innerException); } /// <summary> Modified: trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -13,7 +13,7 @@ /// </summary> public class BytecodeProviderImpl : AbstractBytecodeProvider { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (BytecodeProviderImpl)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (BytecodeProviderImpl)); #region IBytecodeProvider Members Modified: trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -9,7 +9,7 @@ /// </summary> public static class CacheFactory { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CacheFactory)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CacheFactory)); public const string ReadOnly = "read-only"; public const string ReadWrite = "read-write"; Modified: trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -9,7 +9,7 @@ /// </summary> public class NoCacheProvider : ICacheProvider { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NoCacheProvider)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NoCacheProvider)); public const string WarnMessage = "Second-level cache is enabled in a class, but no cache provider was selected. Fake cache used."; Modified: trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -16,7 +16,7 @@ { private ICache cache; - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NonstrictReadWriteCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NonstrictReadWriteCache)); /// <summary> /// Gets the cache region name. Modified: trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -10,7 +10,7 @@ public class ReadOnlyCache : ICacheConcurrencyStrategy { private ICache cache; - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ReadOnlyCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ReadOnlyCache)); /// <summary> /// Gets the cache region name. Modified: trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -30,7 +30,7 @@ bool IsPuttable(long txTimestamp, object newVersion, IComparer comparator); } - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ReadWriteCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ReadWriteCache)); private readonly object _lockObject = new object(); private ICache cache; Modified: trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -18,7 +18,7 @@ /// </summary> public class StandardQueryCache : IQueryCache { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (StandardQueryCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (StandardQueryCache)); private readonly ICache queryCache; private readonly string regionName; private readonly UpdateTimestampsCache updateTimestampsCache; Modified: trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -16,7 +16,7 @@ /// </summary> public class UpdateTimestampsCache { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UpdateTimestampsCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UpdateTimestampsCache)); private ICache updateTimestamps; private readonly string regionName = typeof(UpdateTimestampsCache).Name; Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -75,7 +75,7 @@ protected IDictionary<string, Mappings.TableDescription> tableNameBinding; protected IDictionary<Table, Mappings.ColumnNames> columnNameBindingPerTable; - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Configuration)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Configuration)); protected internal SettingsFactory settingsFactory; Modified: trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -23,7 +23,7 @@ /// </summary> public class HibernateConfiguration : IHibernateConfiguration { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(HibernateConfiguration)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(HibernateConfiguration)); /// <summary> /// Initializes a new instance of the <see cref="HibernateConfiguration"/> class. Modified: trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -8,7 +8,7 @@ /// </summary> public class SessionFactoryConfiguration : SessionFactoryConfigurationBase { - //private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(SessionFactoryConfiguration)); + //private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(SessionFactoryConfiguration)); internal SessionFactoryConfiguration(XPathNavigator hbConfigurationSection) { Modified: trunk/nhibernate/src/NHibernate/Cfg/Environment.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -167,7 +167,7 @@ private static IBytecodeProvider BytecodeProviderInstance; private static bool EnableReflectionOptimizer; - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (Environment)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (Environment)); /// <summary> /// Issue warnings to user when any obsolete property names are used. Modified: trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -47,7 +47,7 @@ #endregion - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Mappings)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Mappings)); private readonly IDictionary<string, PersistentClass> classes; private readonly IDictionary<string, Mapping.Collection> collections; Modified: trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -22,7 +22,7 @@ [Serializable] public sealed class SettingsFactory { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(SettingsFactory)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(SettingsFactory)); private static readonly string DefaultCacheProvider = typeof(NoCacheProvider).AssemblyQualifiedName; public Settings BuildSettings(IDictionary<string, string> properties) Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -10,7 +10,7 @@ { public abstract class Binder { - protected static readonly ILogger log = LogggerProvider.LoggerFor(typeof (Binder)); + protected static readonly ILogger log = LoggerProvider.LoggerFor(typeof (Binder)); protected static readonly IDictionary<string, MetaAttribute> EmptyMeta = new CollectionHelper.EmptyMapClass<string, MetaAttribute>(); Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -8,7 +8,7 @@ { public class FilterDefinitionFactory { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (FilterDefinitionFactory)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (FilterDefinitionFactory)); public static FilterDefinition CreateFilterDefinition(HbmFilterDef filterDefSchema) { Modified: trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -20,7 +20,7 @@ [DebuggerTypeProxy(typeof (CollectionProxy))] public class PersistentArrayHolder : AbstractPersistentCollection, ICollection { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (PersistentArrayHolder)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (PersistentArrayHolder)); private Array array; Modified: trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -15,7 +15,7 @@ /// </summary> public abstract class ConnectionProvider : IConnectionProvider { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionProvider)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionProvider)); private string connString; private IDriver driver; Modified: trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -11,7 +11,7 @@ /// </summary> public sealed class ConnectionProviderFactory { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionProviderFactory)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionProviderFactory)); // cannot be instantiated private ConnectionProviderFactory() Modified: trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -9,7 +9,7 @@ /// </summary> public class DriverConnectionProvider : ConnectionProvider { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DriverConnectionProvider)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DriverConnectionProvider)); /// <summary> /// Closes and Disposes of the <see cref="IDbConnection"/>. Modified: trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -14,7 +14,7 @@ /// </remarks> public class UserSuppliedConnectionProvider : ConnectionProvider { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UserSuppliedConnectionProvider)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UserSuppliedConnectionProvider)); /// <summary> /// Throws an <see cref="InvalidOperationException"/> if this method is called Modified: trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -30,7 +30,7 @@ [Serializable] public class ThreadLocalSessionContext : ICurrentSessionContext { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ThreadLocalSessionContext)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ThreadLocalSessionContext)); [ThreadStatic] protected static IDictionary<ISessionFactory, ISession> context; Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -31,7 +31,7 @@ /// </remarks> public abstract class Dialect { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Dialect)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Dialect)); private readonly TypeNames typeNames = new TypeNames(); private readonly TypeNames hibernateTypeNames = new TypeNames(); Modified: trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -15,7 +15,7 @@ /// <remarks> This strategy is not valid for read style locks. </remarks> public class UpdateLockingStrategy : ILockingStrategy { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UpdateLockingStrategy)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UpdateLockingStrategy)); private readonly ILockable lockable; private readonly LockMode lockMode; private readonly SqlString sql; Modified: trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -7,7 +7,7 @@ { public abstract class AbstractTableMetadata : ITableMetadata { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ITableMetadata)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ITableMetadata)); private string catalog; private string schema; private string name; Modified: trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -14,7 +14,7 @@ /// </summary> public abstract class DriverBase : IDriver, ISqlParameterFormatter { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DriverBase)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DriverBase)); private int commandTimeout; private bool prepareSql; Modified: trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -22,7 +22,7 @@ /// </remarks> public class NHybridDataReader : IDataReader { - private ILogger log = LogggerProvider.LoggerFor(typeof(NHybridDataReader)); + private ILogger log = LoggerProvider.LoggerFor(typeof(NHybridDataReader)); private IDataReader _reader; private bool _isMidstream = false; Modified: trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -20,7 +20,7 @@ [Serializable] public class ActionQueue { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ActionQueue)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ActionQueue)); private const int InitQueueListSize = 5; private ISessionImplementor session; Modified: trunk/nhibernate/src/NHibernate/Engine/Cascade.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Cascade.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Cascade.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -70,7 +70,7 @@ /// </summary> public sealed class Cascade { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Cascade)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Cascade)); private CascadePoint point; private readonly IEventSource eventSource; Modified: trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -14,7 +14,7 @@ /// </summary> public abstract class CascadingAction { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CascadingAction)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CascadingAction)); #region The CascadingAction contract Modified: trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -14,7 +14,7 @@ [Serializable] public class CollectionEntry { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (CollectionEntry)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (CollectionEntry)); /// <summary>session-start/post-flush persistent state</summary> private object snapshot; Modified: trunk/nhibernate/src/NHibernate/Engine/Collections.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Collections.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Collections.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -8,7 +8,7 @@ { public static class Collections { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Collections)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Collections)); /// <summary> /// Record the fact that this collection was dereferenced Modified: trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -9,7 +9,7 @@ /// <summary> Algorithms related to foreign key constraint transparency </summary> public static class ForeignKeys { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ForeignKeys)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ForeignKeys)); public class Nullifier { Modified: trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -9,7 +9,7 @@ /// </summary> public class IdentifierValue { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(IdentifierValue)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(IdentifierValue)); private readonly object value; Modified: trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -22,7 +22,7 @@ /// </remarks> public class CollectionLoadContext { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CollectionLoadContext)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CollectionLoadContext)); private readonly LoadContexts loadContexts; private readonly IDataReader resultSet; private readonly ISet<CollectionKey> localLoadingCollectionKeys = new HashedSet<CollectionKey>(); Modified: trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -26,7 +26,7 @@ /// </remarks> public class LoadContexts { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(LoadContexts)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(LoadContexts)); [NonSerialized] private readonly IPersistenceContext persistenceContext; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -31,7 +31,7 @@ [Serializable] public class HQLQueryPlan : IQueryPlan { - protected static readonly ILogger Log = LogggerProvider.LoggerFor(typeof(HQLQueryPlan)); + protected static readonly ILogger Log = LoggerProvider.LoggerFor(typeof(HQLQueryPlan)); private readonly string _sourceQuery; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -19,7 +19,7 @@ [Serializable] public class NativeSQLQueryPlan { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NativeSQLQueryPlan)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NativeSQLQueryPlan)); private readonly string sourceQuery; private readonly SQLCustomQuery customQuery; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -11,7 +11,7 @@ [Serializable] public class QueryPlanCache { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(QueryPlanCache)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(QueryPlanCache)); private readonly ISessionFactoryImplementor factory; Modified: trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -22,7 +22,7 @@ { public delegate int[] GetNamedParameterLocations(string parameterName); - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (QueryParameters)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (QueryParameters)); private IType[] _positionalParameterTypes; private object[] _positionalParameterValues; Modified: trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -32,8 +32,8 @@ public class StatefulPersistenceContext : IPersistenceContext, ISerializable, IDeserializationCallback { private const int InitCollectionSize = 8; - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(StatefulPersistenceContext)); - private static readonly ILogger ProxyWarnLog = LogggerProvider.LoggerFor(typeof(StatefulPersistenceContext).FullName + ".ProxyWarnLog"); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(StatefulPersistenceContext)); + private static readonly ILogger ProxyWarnLog = LoggerProvider.LoggerFor(typeof(StatefulPersistenceContext).FullName + ".ProxyWarnLog"); public static readonly object NoRow = new object(); Modified: trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -28,7 +28,7 @@ /// </remarks> public class Isolater { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Isolater)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Isolater)); /// <summary> /// Ensures that all processing actually performed by the given work will Modified: trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -18,7 +18,7 @@ /// </summary> public static class TwoPhaseLoad { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(TwoPhaseLoad)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(TwoPhaseLoad)); /// <summary> /// Register the "hydrated" state of an entity instance, after the first step of 2-phase loading. Modified: trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -11,7 +11,7 @@ /// </summary> public class VersionValue { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(VersionValue)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(VersionValue)); private readonly object value; Modified: trunk/nhibernate/src/NHibernate/Engine/Versioning.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Versioning.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Engine/Versioning.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -17,7 +17,7 @@ All = 2 } - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Versioning)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Versioning)); /// <summary> /// Increment the given version number Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -18,7 +18,7 @@ [Serializable] public abstract class AbstractFlushingEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (AbstractFlushingEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (AbstractFlushingEventListener)); protected virtual object Anything { Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -15,7 +15,7 @@ [Serializable] public class AbstractLockUpgradeEventListener : AbstractReassociateEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractLockUpgradeEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractLockUpgradeEventListener)); /// <summary> /// Performs a pessimistic lock upgrade on a given entity, if needed. Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -15,7 +15,7 @@ [Serializable] public class AbstractReassociateEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractReassociateEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractReassociateEventListener)); /// <summary> /// Associates a given entity (either transient or associated with another session) to the given session. Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -28,7 +28,7 @@ [Serializable] public abstract class AbstractSaveEventListener : AbstractReassociateEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractSaveEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractSaveEventListener)); protected virtual bool? AssumedUnsaved { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -11,7 +11,7 @@ [Serializable] public class DefaultAutoFlushEventListener : AbstractFlushingEventListener, IAutoFlushEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultAutoFlushEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultAutoFlushEventListener)); #region IAutoFlushEventListener Members Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -19,7 +19,7 @@ [Serializable] public class DefaultDeleteEventListener : IDeleteEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultDeleteEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultDeleteEventListener)); #region IDeleteEventListener Members Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -10,7 +10,7 @@ [Serializable] public class DefaultDirtyCheckEventListener : AbstractFlushingEventListener, IDirtyCheckEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultDirtyCheckEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultDirtyCheckEventListener)); public virtual void OnDirtyCheck(DirtyCheckEvent @event) { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -16,7 +16,7 @@ [Serializable] public class DefaultEvictEventListener : IEvictEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultEvictEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultEvictEventListener)); public virtual void OnEvict(EvictEvent @event) { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -16,7 +16,7 @@ [Serializable] public class DefaultFlushEntityEventListener : IFlushEntityEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultFlushEntityEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultFlushEntityEventListener)); /// <summary> /// Flushes a single entity's state to the database, by scheduling an update action, if necessary Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -13,7 +13,7 @@ [Serializable] public class DefaultInitializeCollectionEventListener : IInitializeCollectionEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultInitializeCollectionEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultInitializeCollectionEventListener)); /// <summary> called by a collection that wants to initialize itself</summary> public virtual void OnInitializeCollection(InitializeCollectionEvent @event) Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -18,7 +18,7 @@ [Serializable] public class DefaultLoadEventListener : AbstractLockUpgradeEventListener, ILoadEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultLoadEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultLoadEventListener)); public static readonly object RemovedEntityMarker = new object(); public static readonly object InconsistentRTNClassMarker= new object(); public static readonly LockMode DefaultLockMode = LockMode.None; Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -18,7 +18,7 @@ [Serializable] public class DefaultMergeEventListener : AbstractSaveEventListener, IMergeEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultMergeEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultMergeEventListener)); protected override CascadingAction CascadeAction { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -15,7 +15,7 @@ [Serializable] public class DefaultPersistEventListener : AbstractSaveEventListener, IPersistEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultPersistEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultPersistEventListener)); protected override CascadingAction CascadeAction { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -17,7 +17,7 @@ [Serializable] public class DefaultRefreshEventListener : IRefreshEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultRefreshEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultRefreshEventListener)); public virtual void OnRefresh(RefreshEvent @event) { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -13,7 +13,7 @@ [Serializable] public class DefaultReplicateEventListener : AbstractSaveEventListener, IReplicateEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultReplicateEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultReplicateEventListener)); public virtual void OnReplicate(ReplicateEvent @event) { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -14,7 +14,7 @@ [Serializable] public class DefaultSaveOrUpdateEventListener : AbstractSaveEventListener, ISaveOrUpdateEventListener { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultSaveOrUpdateEventListener)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultSaveOrUpdateEventListener)); protected override CascadingAction CascadeAction { Modified: trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs 2010-08-09 11:33:20 UTC (rev 5129) +++ trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs 2010-08-09 11:41:40 UTC (rev 5130) @@ -13,7 +13,7 @@ /// </summary> public class EvictVisitor : AbstractVisitor { - private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(EvictVisitor)); + private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(EvictVisitor)); public EvictVisitor(IEventSource session) : base(session) { } Modified: trunk/nhibernate/src/NHibernate/Event/Default/ReattachVis... [truncated message content] |
From: <fab...@us...> - 2010-08-09 11:33:26
|
Revision: 5129 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5129&view=rev Author: fabiomaulo Date: 2010-08-09 11:33:20 +0000 (Mon, 09 Aug 2010) Log Message: ----------- bye bye log4net reference :( Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Logging.cs trunk/nhibernate/src/NHibernate/NHibernate.build trunk/nhibernate/src/NHibernate/NHibernate.csproj Modified: trunk/nhibernate/src/NHibernate/Logging.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-08 23:08:04 UTC (rev 5128) +++ trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-09 11:33:20 UTC (rev 5129) @@ -1,6 +1,5 @@ using System; using System.Linq.Expressions; -using log4net; namespace NHibernate { @@ -31,38 +30,73 @@ void WarnFormat(string format, params object[] args); } + public interface ILoggerFactory + { + ILogger LoggerFor(string keyName); + ILogger LoggerFor(System.Type type); + } + public class LogggerProvider { - private readonly Func<string, ILogger> loggerByKeyGetter; - private readonly Func<System.Type, ILogger> loggerByTypeGetter; + private readonly ILoggerFactory loggerFactory; private static LogggerProvider instance; + static LogggerProvider() { - SetLoggersFactoryDelegates(key => new Log4NetLogger(LogManager.GetLogger(key)), type => new Log4NetLogger(LogManager.GetLogger(type))); + SetLoggersFactory(new Log4NetLoggerFactory()); } - public static void SetLoggersFactoryDelegates(Func<string, ILogger> loggerByKeyGetter, Func<System.Type, ILogger> loggerByTypeGetter) + public static void SetLoggersFactory(ILoggerFactory loggerFactory) { - instance = new LogggerProvider(loggerByKeyGetter, loggerByTypeGetter); + instance = new LogggerProvider(loggerFactory); } - private LogggerProvider(Func<string, ILogger> loggerByKeyGetter, Func<System.Type, ILogger> loggerByTypeGetter) + private LogggerProvider(ILoggerFactory loggerFactory) { - this.loggerByKeyGetter = loggerByKeyGetter; - this.loggerByTypeGetter = loggerByTypeGetter; + this.loggerFactory = loggerFactory; } public static ILogger LoggerFor(string keyName) { - return instance.loggerByKeyGetter(keyName); + return instance.loggerFactory.LoggerFor(keyName); } public static ILogger LoggerFor(System.Type type) { - return instance.loggerByTypeGetter(type); + return instance.loggerFactory.LoggerFor(type); } } + public class Log4NetLoggerFactory: ILoggerFactory + { + private static readonly System.Type LogManagerType = System.Type.GetType("log4net.LogManager, log4net"); + private static readonly Func<string, object> GetLoggerByNameDelegate; + private static readonly Func<System.Type, object> GetLoggerByTypeDelegate; + static Log4NetLoggerFactory() + { + GetLoggerByNameDelegate = GetGetLoggerMethodCall<string>(); + GetLoggerByTypeDelegate = GetGetLoggerMethodCall<System.Type>(); + } + public ILogger LoggerFor(string keyName) + { + return new Log4NetLogger(GetLoggerByNameDelegate(keyName)); + } + + public ILogger LoggerFor(System.Type type) + { + return new Log4NetLogger(GetLoggerByTypeDelegate(type)); + } + + private static Func<TParameter, object> GetGetLoggerMethodCall<TParameter>() + { + var method = LogManagerType.GetMethod("GetLogger", new[] { typeof(TParameter) }); + ParameterExpression resultValue; + ParameterExpression keyParam = Expression.Parameter(typeof(TParameter), "key"); + MethodCallExpression methodCall = Expression.Call(null, method, new Expression[] { resultValue = keyParam }); + return Expression.Lambda<Func<TParameter, object>>(methodCall, new[] { resultValue }).Compile(); + } + } + public class Log4NetLogger: ILogger { private static readonly System.Type ILogType = System.Type.GetType("log4net.ILog, log4net"); Modified: trunk/nhibernate/src/NHibernate/NHibernate.build =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.build 2010-08-08 23:08:04 UTC (rev 5128) +++ trunk/nhibernate/src/NHibernate/NHibernate.build 2010-08-09 11:33:20 UTC (rev 5129) @@ -23,7 +23,6 @@ <include name="System.Data.OracleClient" /> <include name="System.Web.dll" /> <include name="Iesi.Collections.dll" /> - <include name="log4net.dll" /> <include name="Antlr3.Runtime.dll" /> <include name="Remotion.dll" /> <include name="Remotion.Data.Linq.dll" /> Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-08 23:08:04 UTC (rev 5128) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-09 11:33:20 UTC (rev 5129) @@ -62,10 +62,6 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\3.5\Iesi.Collections.dll</HintPath> </Reference> - <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\lib\net\3.5\log4net.dll</HintPath> - </Reference> <Reference Include="Remotion.Data.Linq, Version=1.13.41.2, Culture=neutral, PublicKeyToken=cab60358ab4081ea"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\3.5\Remotion.Data.Linq.dll</HintPath> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-08 23:08:10
|
Revision: 5128 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5128&view=rev Author: fabiomaulo Date: 2010-08-08 23:08:04 +0000 (Sun, 08 Aug 2010) Log Message: ----------- Log4NetLogger without strong-dependency in Log4Net Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Logging.cs Modified: trunk/nhibernate/src/NHibernate/Logging.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-08 21:40:41 UTC (rev 5127) +++ trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-08 23:08:04 UTC (rev 5128) @@ -1,4 +1,5 @@ using System; +using System.Linq.Expressions; using log4net; namespace NHibernate @@ -64,130 +65,196 @@ public class Log4NetLogger: ILogger { - private readonly ILog logger; - private readonly Func<ILog, bool> isErrorEnabledDelegate = l => l.IsErrorEnabled; - private readonly Func<ILog, bool> isFatalEnabledDelegate = l => l.IsFatalEnabled; - private readonly Func<ILog, bool> isDebugEnabledDelegate = l => l.IsDebugEnabled; - private readonly Func<ILog, bool> isInfoEnabledDelegate = l => l.IsInfoEnabled; - private readonly Func<ILog, bool> isWarnEnabledDelegate = l => l.IsWarnEnabled; + private static readonly System.Type ILogType = System.Type.GetType("log4net.ILog, log4net"); + private static readonly Func<object, bool> IsErrorEnabledDelegate; + private static readonly Func<object, bool> IsFatalEnabledDelegate; + private static readonly Func<object, bool> IsDebugEnabledDelegate; + private static readonly Func<object, bool> IsInfoEnabledDelegate; + private static readonly Func<object, bool> IsWarnEnabledDelegate; - private readonly Action<ILog, object> errorDelegate= (l,o) => l.Error(o); - private readonly Action<ILog, object,Exception> errorExceptionDelegate=(l,o,e)=> l.Error(o,e); - private readonly Action<ILog, string , object[]> errorFormatDelegate= (l,f,p)=>l.ErrorFormat(f,p); + private static readonly Action<object, object> ErrorDelegate; + private static readonly Action<object, object, Exception> ErrorExceptionDelegate; + private static readonly Action<object, string, object[]> ErrorFormatDelegate; - private readonly Action<ILog, object> fatalDelegate= (l,o) => l.Fatal(o); - private readonly Action<ILog, object,Exception> fatalExceptionDelegate=(l,o,e)=> l.Fatal(o,e); + private static readonly Action<object, object> FatalDelegate; + private static readonly Action<object, object, Exception> FatalExceptionDelegate; - private readonly Action<ILog, object> debugDelegate= (l,o) => l.Debug(o); - private readonly Action<ILog, object, Exception> debugExceptionDelegate = (l, o, e) => l.Debug(o, e); - private readonly Action<ILog, string, object[]> debugFormatDelegate = (l, f, p) => l.DebugFormat(f, p); + private static readonly Action<object, object> DebugDelegate; + private static readonly Action<object, object, Exception> DebugExceptionDelegate; + private static readonly Action<object, string, object[]> DebugFormatDelegate; - private readonly Action<ILog, object> infoDelegate= (l,o) => l.Info(o); - private readonly Action<ILog, object, Exception> infoExceptionDelegate = (l, o, e) => l.Info(o, e); - private readonly Action<ILog, string, object[]> infoFormatDelegate = (l, f, p) => l.InfoFormat(f, p); + private static readonly Action<object, object> InfoDelegate; + private static readonly Action<object, object, Exception> InfoExceptionDelegate; + private static readonly Action<object, string, object[]> InfoFormatDelegate; - private readonly Action<ILog, object> warnDelegate= (l,o) => l.Warn(o); - private readonly Action<ILog, object, Exception> warnExceptionDelegate = (l, o, e) => l.Warn(o, e); - private readonly Action<ILog, string, object[]> warnFormatDelegate = (l, f, p) => l.WarnFormat(f, p); + private static readonly Action<object, object> WarnDelegate; + private static readonly Action<object, object, Exception> WarnExceptionDelegate; + private static readonly Action<object, string, object[]> WarnFormatDelegate; - public Log4NetLogger(ILog logger) + private readonly object logger; + + static Log4NetLogger() { + IsErrorEnabledDelegate = GetPropertyGetter("IsErrorEnabled"); + IsFatalEnabledDelegate = GetPropertyGetter("IsFatalEnabled"); + IsDebugEnabledDelegate = GetPropertyGetter("IsDebugEnabled"); + IsInfoEnabledDelegate = GetPropertyGetter("IsInfoEnabled"); + IsWarnEnabledDelegate = GetPropertyGetter("IsWarnEnabled"); + ErrorDelegate = GetMethodCallForMessage("Error"); + ErrorExceptionDelegate = GetMethodCallForMessageException("Error"); + ErrorFormatDelegate = GetMethodCallForMessageFormat("ErrorFormat"); + + FatalDelegate = GetMethodCallForMessage("Fatal"); + FatalExceptionDelegate = GetMethodCallForMessageException("Fatal"); + + DebugDelegate = GetMethodCallForMessage("Debug"); + DebugExceptionDelegate = GetMethodCallForMessageException("Debug"); + DebugFormatDelegate = GetMethodCallForMessageFormat("DebugFormat"); + + InfoDelegate = GetMethodCallForMessage("Info"); + InfoExceptionDelegate = GetMethodCallForMessageException("Info"); + InfoFormatDelegate = GetMethodCallForMessageFormat("InfoFormat"); + + WarnDelegate = GetMethodCallForMessage("Warn"); + WarnExceptionDelegate = GetMethodCallForMessageException("Warn"); + WarnFormatDelegate = GetMethodCallForMessageFormat("WarnFormat"); + } + + private static Func<object, bool> GetPropertyGetter(string propertyName) + { + ParameterExpression funcParam = Expression.Parameter(typeof(object), "l"); + Expression convertedParam = Expression.Convert(funcParam, ILogType); + Expression property = Expression.Property(convertedParam, propertyName); + return (Func<object, bool>)Expression.Lambda(property, funcParam).Compile(); + } + + private static Action<object, object> GetMethodCallForMessage(string methodName) + { + ParameterExpression loggerParam = Expression.Parameter(typeof(object), "l"); + ParameterExpression messageParam = Expression.Parameter(typeof(object), "o"); + Expression convertedParam = Expression.Convert(loggerParam, ILogType); + MethodCallExpression methodCall = Expression.Call(convertedParam, ILogType.GetMethod(methodName, new[] { typeof(object) }), messageParam); + return (Action<object, object>)Expression.Lambda(methodCall, new[] { loggerParam, messageParam }).Compile(); + } + + private static Action<object, object, Exception> GetMethodCallForMessageException(string methodName) + { + ParameterExpression loggerParam = Expression.Parameter(typeof(object), "l"); + ParameterExpression messageParam = Expression.Parameter(typeof(object), "o"); + ParameterExpression exceptionParam = Expression.Parameter(typeof(Exception), "e"); + Expression convertedParam = Expression.Convert(loggerParam, ILogType); + MethodCallExpression methodCall = Expression.Call(convertedParam, ILogType.GetMethod(methodName, new[] { typeof(object), typeof(Exception) }), messageParam, exceptionParam); + return (Action<object, object, Exception>)Expression.Lambda(methodCall, new[] { loggerParam, messageParam, exceptionParam }).Compile(); + } + + private static Action<object, string, object[]> GetMethodCallForMessageFormat(string methodName) + { + ParameterExpression loggerParam = Expression.Parameter(typeof(object), "l"); + ParameterExpression formatParam = Expression.Parameter(typeof(string), "f"); + ParameterExpression parametersParam = Expression.Parameter(typeof(object[]), "p"); + Expression convertedParam = Expression.Convert(loggerParam, ILogType); + MethodCallExpression methodCall = Expression.Call(convertedParam, ILogType.GetMethod(methodName, new[] { typeof(string), typeof(object[]) }), formatParam, parametersParam); + return (Action<object, string, object[]>)Expression.Lambda(methodCall, new[] { loggerParam, formatParam, parametersParam }).Compile(); + } + + public Log4NetLogger(object logger) + { this.logger = logger; } public bool IsErrorEnabled { - get { return isErrorEnabledDelegate(logger); } + get { return IsErrorEnabledDelegate(logger); } } public bool IsFatalEnabled { - get { return isFatalEnabledDelegate(logger); } + get { return IsFatalEnabledDelegate(logger); } } public bool IsDebugEnabled { - get { return isDebugEnabledDelegate(logger); } + get { return IsDebugEnabledDelegate(logger); } } public bool IsInfoEnabled { - get { return isInfoEnabledDelegate(logger); } + get { return IsInfoEnabledDelegate(logger); } } public bool IsWarnEnabled { - get { return isWarnEnabledDelegate(logger); } + get { return IsWarnEnabledDelegate(logger); } } public void Error(object message) { - errorDelegate(logger, message); + ErrorDelegate(logger, message); } public void Error(object message, Exception exception) { - errorExceptionDelegate(logger,message,exception); + ErrorExceptionDelegate(logger,message,exception); } public void ErrorFormat(string format, params object[] args) { - errorFormatDelegate(logger, format, args); + ErrorFormatDelegate(logger, format, args); } public void Fatal(object message) { - fatalDelegate(logger, message); + FatalDelegate(logger, message); } public void Fatal(object message, Exception exception) { - fatalExceptionDelegate(logger,message,exception); + FatalExceptionDelegate(logger,message,exception); } public void Debug(object message) { - debugDelegate(logger, message); + DebugDelegate(logger, message); } public void Debug(object message, Exception exception) { - debugExceptionDelegate(logger, message, exception); + DebugExceptionDelegate(logger, message, exception); } public void DebugFormat(string format, params object[] args) { - debugFormatDelegate(logger, format, args); + DebugFormatDelegate(logger, format, args); } public void Info(object message) { - infoDelegate(logger, message); + InfoDelegate(logger, message); } public void Info(object message, Exception exception) { - infoExceptionDelegate(logger, message, exception); + InfoExceptionDelegate(logger, message, exception); } public void InfoFormat(string format, params object[] args) { - infoFormatDelegate(logger, format, args); + InfoFormatDelegate(logger, format, args); } public void Warn(object message) { - warnDelegate(logger, message); + WarnDelegate(logger, message); } public void Warn(object message, Exception exception) { - warnExceptionDelegate(logger, message, exception); + WarnExceptionDelegate(logger, message, exception); } public void WarnFormat(string format, params object[] args) { - warnFormatDelegate(logger, format, args); + WarnFormatDelegate(logger, format, args); } } } \ 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...> - 2010-08-08 21:40:53
|
Revision: 5127 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5127&view=rev Author: fabiomaulo Date: 2010-08-08 21:40:41 +0000 (Sun, 08 Aug 2010) Log Message: ----------- Isolated Log4Net stuff (first step to fix NH-1554 and NH-2263) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs trunk/nhibernate/src/NHibernate/AssertionFailure.cs trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs trunk/nhibernate/src/NHibernate/Cfg/Environment.cs trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingLogExtensions.cs trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs trunk/nhibernate/src/NHibernate/Engine/Cascade.cs trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs trunk/nhibernate/src/NHibernate/Engine/Collections.cs trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs trunk/nhibernate/src/NHibernate/Engine/Versioning.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs trunk/nhibernate/src/NHibernate/Event/Default/ReattachVisitor.cs trunk/nhibernate/src/NHibernate/Event/Default/WrapVisitor.cs trunk/nhibernate/src/NHibernate/Exceptions/SQLExceptionConverterFactory.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/ErrorCounter.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableDeleteExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/MultiTableUpdateExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlParser.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/AbstractRestrictableStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DeleteStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/DotNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementFactory.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromReferenceNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/MethodNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/QueryNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/UpdateStatement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/LiteralProcessor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/PathHelper.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs trunk/nhibernate/src/NHibernate/Hql/Classic/QueryTranslator.cs trunk/nhibernate/src/NHibernate/Hql/QuerySplitter.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/OptimizerFactory.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/SequenceStructure.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/SequenceStyleGenerator.cs trunk/nhibernate/src/NHibernate/Id/Enhanced/TableStructure.cs trunk/nhibernate/src/NHibernate/Id/IdentifierGeneratorFactory.cs trunk/nhibernate/src/NHibernate/Id/IncrementGenerator.cs trunk/nhibernate/src/NHibernate/Id/NativeGuidGenerator.cs trunk/nhibernate/src/NHibernate/Id/SequenceGenerator.cs trunk/nhibernate/src/NHibernate/Id/SequenceHiLoGenerator.cs trunk/nhibernate/src/NHibernate/Id/TableGenerator.cs trunk/nhibernate/src/NHibernate/Id/TableHiLoGenerator.cs trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/EnumerableImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Impl/Printer.cs trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs trunk/nhibernate/src/NHibernate/Impl/SessionFactoryObjectFactory.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate/LazyInitializationException.cs trunk/nhibernate/src/NHibernate/Linq/Functions/LinqToHqlGeneratorsRegistryFactory.cs trunk/nhibernate/src/NHibernate/Loader/Collection/BasicCollectionLoader.cs trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyLoader.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaJoinWalker.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs trunk/nhibernate/src/NHibernate/Loader/Custom/Sql/SQLCustomQuery.cs trunk/nhibernate/src/NHibernate/Loader/Custom/Sql/SQLQueryReturnProcessor.cs trunk/nhibernate/src/NHibernate/Loader/Entity/AbstractEntityLoader.cs trunk/nhibernate/src/NHibernate/Loader/Entity/CollectionElementLoader.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate/Mapping/RootClass.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/NonUniqueResultException.cs trunk/nhibernate/src/NHibernate/Persister/Collection/AbstractCollectionPersister.cs trunk/nhibernate/src/NHibernate/Persister/Collection/NamedQueryCollectionInitializer.cs trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate/Persister/Entity/NamedQueryLoader.cs trunk/nhibernate/src/NHibernate/SqlCommand/InsertSelect.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlDeleteBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlInsertBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlSelectBuilder.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlUpdateBuilder.cs trunk/nhibernate/src/NHibernate/Stat/StatisticsImpl.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/DatabaseMetadata.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaExport.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaUpdate.cs trunk/nhibernate/src/NHibernate/Tool/hbm2ddl/SchemaValidator.cs trunk/nhibernate/src/NHibernate/Transaction/AdoNetTransactionFactory.cs trunk/nhibernate/src/NHibernate/Transaction/AdoNetWithDistributedTransactionFactory.cs trunk/nhibernate/src/NHibernate/Transaction/AdoTransaction.cs trunk/nhibernate/src/NHibernate/Transform/DistinctRootEntityResultTransformer.cs trunk/nhibernate/src/NHibernate/Tuple/Component/AbstractComponentTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/AbstractEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/DynamicMapEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/EntityMetamodel.cs trunk/nhibernate/src/NHibernate/Tuple/Entity/PocoEntityTuplizer.cs trunk/nhibernate/src/NHibernate/Tuple/PocoInstantiator.cs trunk/nhibernate/src/NHibernate/Type/CompositeCustomType.cs trunk/nhibernate/src/NHibernate/Type/CustomType.cs trunk/nhibernate/src/NHibernate/Type/DbTimestampType.cs trunk/nhibernate/src/NHibernate/Type/NullableType.cs trunk/nhibernate/src/NHibernate/Util/ADOExceptionReporter.cs trunk/nhibernate/src/NHibernate/Util/IdentityMap.cs trunk/nhibernate/src/NHibernate/Util/JoinedEnumerable.cs trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Logging.cs trunk/nhibernate/src/NHibernate.Test/Logging/ trunk/nhibernate/src/NHibernate.Test/Logging/Log4NetLoggerTest.cs trunk/nhibernate/src/NHibernate.Test/Logging/LogggerProviderTest.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Data; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Driver; using NHibernate.Engine; using NHibernate.Exceptions; @@ -21,7 +21,7 @@ /// </summary> public abstract class AbstractBatcher : IBatcher { - protected static readonly ILog log = LogManager.GetLogger(typeof(AbstractBatcher)); + protected static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractBatcher)); private static int openCommandCount; private static int openReaderCount; Modified: trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Data; using System.Runtime.Serialization; using System.Security.Permissions; -using log4net; + using NHibernate.Engine; namespace NHibernate.AdoNet @@ -17,7 +17,7 @@ [Serializable] public class ConnectionManager : ISerializable, IDeserializationCallback { - private static readonly ILog log = LogManager.GetLogger(typeof(ConnectionManager)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionManager)); public interface Callback { Modified: trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,14 +1,14 @@ using System; using System.Data; using System.Text; -using log4net; + namespace NHibernate.AdoNet.Util { /// <summary> Centralize logging handling for SQL statements. </summary> public class SqlStatementLogger { - private static readonly ILog log = LogManager.GetLogger("NHibernate.SQL"); + private static readonly ILogger log = LogggerProvider.LoggerFor("NHibernate.SQL"); /// <summary> Constructs a new SqlStatementLogger instance.</summary> public SqlStatementLogger() : this(false, false) { } Modified: trunk/nhibernate/src/NHibernate/AssertionFailure.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AssertionFailure.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/AssertionFailure.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -using log4net; + namespace NHibernate { /// <summary> @@ -17,7 +17,7 @@ /// </summary> public AssertionFailure() : base(String.Empty) { - LogManager.GetLogger(typeof(AssertionFailure)).Error(DefaultMessage); + LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage); } /// <summary> @@ -26,7 +26,7 @@ /// <param name="message">The message that describes the error. </param> public AssertionFailure(string message) : base(message) { - LogManager.GetLogger(typeof(AssertionFailure)).Error(DefaultMessage, this); + LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, this); } /// <summary> @@ -40,7 +40,7 @@ /// </param> public AssertionFailure(string message, Exception innerException) : base(message, innerException) { - LogManager.GetLogger(typeof(AssertionFailure)).Error(DefaultMessage, innerException); + LogggerProvider.LoggerFor(typeof(AssertionFailure)).Error(DefaultMessage, innerException); } /// <summary> Modified: trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.CodeDom.Compiler; using System.Reflection; using System.Text; -using log4net; + using Microsoft.CSharp; using NHibernate.Properties; @@ -13,7 +13,7 @@ /// </summary> public class BytecodeProviderImpl : AbstractBytecodeProvider { - private static readonly ILog log = LogManager.GetLogger(typeof (BytecodeProviderImpl)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (BytecodeProviderImpl)); #region IBytecodeProvider Members Modified: trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,4 +1,4 @@ -using log4net; + using NHibernate.Cfg; using System.Collections.Generic; @@ -9,7 +9,7 @@ /// </summary> public static class CacheFactory { - private static readonly ILog log = LogManager.GetLogger(typeof(CacheFactory)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CacheFactory)); public const string ReadOnly = "read-only"; public const string ReadWrite = "read-write"; Modified: trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -using log4net; + namespace NHibernate.Cache { /// <summary> @@ -9,7 +9,7 @@ /// </summary> public class NoCacheProvider : ICacheProvider { - private static readonly ILog log = LogManager.GetLogger(typeof(NoCacheProvider)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NoCacheProvider)); public const string WarnMessage = "Second-level cache is enabled in a class, but no cache provider was selected. Fake cache used."; Modified: trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections; -using log4net; + namespace NHibernate.Cache { /// <summary> @@ -16,7 +16,7 @@ { private ICache cache; - private static readonly ILog log = LogManager.GetLogger(typeof(NonstrictReadWriteCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NonstrictReadWriteCache)); /// <summary> /// Gets the cache region name. Modified: trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections; -using log4net; + namespace NHibernate.Cache { /// <summary> @@ -10,7 +10,7 @@ public class ReadOnlyCache : ICacheConcurrencyStrategy { private ICache cache; - private static readonly ILog log = LogManager.GetLogger(typeof(ReadOnlyCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ReadOnlyCache)); /// <summary> /// Gets the cache region name. Modified: trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections; -using log4net; + namespace NHibernate.Cache { /// <summary> @@ -30,7 +30,7 @@ bool IsPuttable(long txTimestamp, object newVersion, IComparer comparator); } - private static readonly ILog log = LogManager.GetLogger(typeof(ReadWriteCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ReadWriteCache)); private readonly object _lockObject = new object(); private ICache cache; Modified: trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Cfg; using NHibernate.Engine; using NHibernate.Type; @@ -18,7 +18,7 @@ /// </summary> public class StandardQueryCache : IQueryCache { - private static readonly ILog log = LogManager.GetLogger(typeof (StandardQueryCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (StandardQueryCache)); private readonly ICache queryCache; private readonly string regionName; private readonly UpdateTimestampsCache updateTimestampsCache; Modified: trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Runtime.CompilerServices; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Cfg; namespace NHibernate.Cache @@ -16,7 +16,7 @@ /// </summary> public class UpdateTimestampsCache { - private static readonly ILog log = LogManager.GetLogger(typeof(UpdateTimestampsCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UpdateTimestampsCache)); private ICache updateTimestamps; private readonly string regionName = typeof(UpdateTimestampsCache).Name; Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -10,7 +10,7 @@ using System.Xml.Schema; using Iesi.Collections; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Bytecode; using NHibernate.Cfg.ConfigurationSchema; using NHibernate.Cfg.MappingSchema; @@ -75,7 +75,7 @@ protected IDictionary<string, Mappings.TableDescription> tableNameBinding; protected IDictionary<Table, Mappings.ColumnNames> columnNameBindingPerTable; - private static readonly ILog log = LogManager.GetLogger(typeof(Configuration)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Configuration)); protected internal SettingsFactory settingsFactory; Modified: trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,8 +1,8 @@ using System; using System.Xml; using System.Xml.XPath; -using log4net; + namespace NHibernate.Cfg.ConfigurationSchema { /// <summary> @@ -23,7 +23,7 @@ /// </summary> public class HibernateConfiguration : IHibernateConfiguration { - private static readonly ILog log = LogManager.GetLogger(typeof(HibernateConfiguration)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(HibernateConfiguration)); /// <summary> /// Initializes a new instance of the <see cref="HibernateConfiguration"/> class. Modified: trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/SessionFactoryConfiguration.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -8,7 +8,7 @@ /// </summary> public class SessionFactoryConfiguration : SessionFactoryConfigurationBase { - //private static readonly ILog log = LogManager.GetLogger(typeof(SessionFactoryConfiguration)); + //private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(SessionFactoryConfiguration)); internal SessionFactoryConfiguration(XPathNavigator hbConfigurationSection) { Modified: trunk/nhibernate/src/NHibernate/Cfg/Environment.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Configuration; using System.Reflection; -using log4net; + using NHibernate.Bytecode; using NHibernate.Cfg.ConfigurationSchema; using NHibernate.Util; @@ -167,7 +167,7 @@ private static IBytecodeProvider BytecodeProviderInstance; private static bool EnableReflectionOptimizer; - private static readonly ILog log = LogManager.GetLogger(typeof (Environment)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (Environment)); /// <summary> /// Issue warnings to user when any obsolete property names are used. Modified: trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Engine; using NHibernate.Mapping; @@ -47,7 +47,7 @@ #endregion - private static readonly ILog log = LogManager.GetLogger(typeof(Mappings)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Mappings)); private readonly IDictionary<string, PersistentClass> classes; private readonly IDictionary<string, Mapping.Collection> collections; Modified: trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using log4net; + using NHibernate.AdoNet; using NHibernate.AdoNet.Util; using NHibernate.Cache; @@ -22,7 +22,7 @@ [Serializable] public sealed class SettingsFactory { - private static readonly ILog log = LogManager.GetLogger(typeof(SettingsFactory)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(SettingsFactory)); private static readonly string DefaultCacheProvider = typeof(NoCacheProvider).AssemblyQualifiedName; public Settings BuildSettings(IDictionary<string, string> properties) Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using log4net; + using NHibernate.Mapping; using NHibernate.Type; using NHibernate.Util; @@ -10,7 +10,7 @@ { public abstract class Binder { - protected static readonly ILog log = LogManager.GetLogger(typeof (Binder)); + protected static readonly ILogger log = LogggerProvider.LoggerFor(typeof (Binder)); protected static readonly IDictionary<string, MetaAttribute> EmptyMeta = new CollectionHelper.EmptyMapClass<string, MetaAttribute>(); Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System.Collections.Generic; -using log4net; + using NHibernate.Cfg.MappingSchema; using NHibernate.Engine; using NHibernate.Type; @@ -8,7 +8,7 @@ { public class FilterDefinitionFactory { - private static readonly ILog log = LogManager.GetLogger(typeof (FilterDefinitionFactory)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (FilterDefinitionFactory)); public static FilterDefinition CreateFilterDefinition(HbmFilterDef filterDefSchema) { Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingLogExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingLogExtensions.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingLogExtensions.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,11 +1,11 @@ using System.Linq; -using log4net; + namespace NHibernate.Cfg.XmlHbmBinding { public static class MappingLogExtensions { - public static void LogMapped(this Mapping.Property property, ILog log) + public static void LogMapped(this Mapping.Property property, ILogger log) { if (log.IsDebugEnabled) { Modified: trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Data; using System.Diagnostics; -using log4net; + using NHibernate.DebugHelpers; using NHibernate.Engine; using NHibernate.Loader; @@ -20,7 +20,7 @@ [DebuggerTypeProxy(typeof (CollectionProxy))] public class PersistentArrayHolder : AbstractPersistentCollection, ICollection { - private static readonly ILog log = LogManager.GetLogger(typeof (PersistentArrayHolder)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (PersistentArrayHolder)); private Array array; Modified: trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Configuration; using System.Data; -using log4net; + using NHibernate.Driver; using NHibernate.Util; using Environment=NHibernate.Cfg.Environment; @@ -15,7 +15,7 @@ /// </summary> public abstract class ConnectionProvider : IConnectionProvider { - private static readonly ILog log = LogManager.GetLogger(typeof(ConnectionProvider)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionProvider)); private string connString; private IDriver driver; Modified: trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using log4net; + using NHibernate.Util; using Environment=NHibernate.Cfg.Environment; @@ -11,7 +11,7 @@ /// </summary> public sealed class ConnectionProviderFactory { - private static readonly ILog log = LogManager.GetLogger(typeof(ConnectionProviderFactory)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ConnectionProviderFactory)); // cannot be instantiated private ConnectionProviderFactory() Modified: trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Data; -using log4net; + namespace NHibernate.Connection { /// <summary> @@ -9,7 +9,7 @@ /// </summary> public class DriverConnectionProvider : ConnectionProvider { - private static readonly ILog log = LogManager.GetLogger(typeof(DriverConnectionProvider)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DriverConnectionProvider)); /// <summary> /// Closes and Disposes of the <see cref="IDbConnection"/>. Modified: trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Data; -using log4net; + namespace NHibernate.Connection { /// <summary> @@ -14,7 +14,7 @@ /// </remarks> public class UserSuppliedConnectionProvider : ConnectionProvider { - private static readonly ILog log = LogManager.GetLogger(typeof(UserSuppliedConnectionProvider)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UserSuppliedConnectionProvider)); /// <summary> /// Throws an <see cref="InvalidOperationException"/> if this method is called Modified: trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using log4net; + using NHibernate; using NHibernate.Engine; @@ -30,7 +30,7 @@ [Serializable] public class ThreadLocalSessionContext : ICurrentSessionContext { - private static readonly ILog log = LogManager.GetLogger(typeof(ThreadLocalSessionContext)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ThreadLocalSessionContext)); [ThreadStatic] protected static IDictionary<ISessionFactory, ISession> context; Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -4,7 +4,7 @@ using System.Data.Common; using System.Text; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Dialect.Function; using NHibernate.Dialect.Lock; using NHibernate.Dialect.Schema; @@ -31,7 +31,7 @@ /// </remarks> public abstract class Dialect { - private static readonly ILog log = LogManager.GetLogger(typeof(Dialect)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Dialect)); private readonly TypeNames typeNames = new TypeNames(); private readonly TypeNames hibernateTypeNames = new TypeNames(); Modified: trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Data; -using log4net; + using NHibernate.Engine; using NHibernate.Exceptions; using NHibernate.Impl; @@ -15,7 +15,7 @@ /// <remarks> This strategy is not valid for read style locks. </remarks> public class UpdateLockingStrategy : ILockingStrategy { - private static readonly ILog log = LogManager.GetLogger(typeof(UpdateLockingStrategy)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(UpdateLockingStrategy)); private readonly ILockable lockable; private readonly LockMode lockMode; private readonly SqlString sql; Modified: trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,13 +1,13 @@ using System.Collections.Generic; using System.Data; -using log4net; + using NHibernate.Util; namespace NHibernate.Dialect.Schema { public abstract class AbstractTableMetadata : ITableMetadata { - private static readonly ILog log = LogManager.GetLogger(typeof(ITableMetadata)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ITableMetadata)); private string catalog; private string schema; private string name; Modified: trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Data; -using log4net; + using NHibernate.SqlCommand; using NHibernate.SqlTypes; using NHibernate.Util; @@ -14,7 +14,7 @@ /// </summary> public abstract class DriverBase : IDriver, ISqlParameterFormatter { - private static readonly ILog log = LogManager.GetLogger(typeof(DriverBase)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DriverBase)); private int commandTimeout; private bool prepareSql; Modified: trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Data; -using log4net; + namespace NHibernate.Driver { /// <summary> @@ -22,7 +22,7 @@ /// </remarks> public class NHybridDataReader : IDataReader { - private ILog log = LogManager.GetLogger(typeof(NHybridDataReader)); + private ILogger log = LogggerProvider.LoggerFor(typeof(NHybridDataReader)); private IDataReader _reader; private bool _isMidstream = false; Modified: trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Action; using NHibernate.Cache; @@ -20,7 +20,7 @@ [Serializable] public class ActionQueue { - private static readonly ILog log = LogManager.GetLogger(typeof(ActionQueue)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ActionQueue)); private const int InitQueueListSize = 5; private ISessionImplementor session; Modified: trunk/nhibernate/src/NHibernate/Engine/Cascade.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Cascade.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Cascade.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System.Collections; -using log4net; + using NHibernate.Collection; using NHibernate.Event; using NHibernate.Persister.Collection; @@ -70,7 +70,7 @@ /// </summary> public sealed class Cascade { - private static readonly ILog log = LogManager.GetLogger(typeof(Cascade)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Cascade)); private CascadePoint point; private readonly IEventSource eventSource; Modified: trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System.Collections; using Iesi.Collections; -using log4net; + using NHibernate.Collection; using NHibernate.Event; using NHibernate.Persister.Entity; @@ -14,7 +14,7 @@ /// </summary> public abstract class CascadingAction { - private static readonly ILog log = LogManager.GetLogger(typeof(CascadingAction)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CascadingAction)); #region The CascadingAction contract Modified: trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Collections; -using log4net; + using NHibernate.Collection; using NHibernate.Impl; using NHibernate.Persister.Collection; @@ -14,7 +14,7 @@ [Serializable] public class CollectionEntry { - private static readonly ILog log = LogManager.GetLogger(typeof (CollectionEntry)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (CollectionEntry)); /// <summary>session-start/post-flush persistent state</summary> private object snapshot; Modified: trunk/nhibernate/src/NHibernate/Engine/Collections.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Collections.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Collections.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,4 +1,4 @@ -using log4net; + using NHibernate.Collection; using NHibernate.Impl; using NHibernate.Persister.Collection; @@ -8,7 +8,7 @@ { public static class Collections { - private static readonly ILog log = LogManager.GetLogger(typeof(Collections)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Collections)); /// <summary> /// Record the fact that this collection was dereferenced Modified: trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,4 +1,4 @@ -using log4net; + using NHibernate.Id; using NHibernate.Persister.Entity; using NHibernate.Proxy; @@ -9,7 +9,7 @@ /// <summary> Algorithms related to foreign key constraint transparency </summary> public static class ForeignKeys { - private static readonly ILog log = LogManager.GetLogger(typeof(ForeignKeys)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(ForeignKeys)); public class Nullifier { Modified: trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ -using log4net; + namespace NHibernate.Engine { /// <summary> @@ -9,7 +9,7 @@ /// </summary> public class IdentifierValue { - private static readonly ILog log = LogManager.GetLogger(typeof(IdentifierValue)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(IdentifierValue)); private readonly object value; Modified: trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -3,7 +3,7 @@ using System.Data; using System.Diagnostics; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Cache; using NHibernate.Cache.Entry; using NHibernate.Collection; @@ -22,7 +22,7 @@ /// </remarks> public class CollectionLoadContext { - private static readonly ILog log = LogManager.GetLogger(typeof(CollectionLoadContext)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(CollectionLoadContext)); private readonly LoadContexts loadContexts; private readonly IDataReader resultSet; private readonly ISet<CollectionKey> localLoadingCollectionKeys = new HashedSet<CollectionKey>(); Modified: trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using log4net; + using NHibernate.Collection; using NHibernate.Impl; using NHibernate.Persister.Collection; @@ -26,7 +26,7 @@ /// </remarks> public class LoadContexts { - private static readonly ILog log = LogManager.GetLogger(typeof(LoadContexts)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(LoadContexts)); [NonSerialized] private readonly IPersistenceContext persistenceContext; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Event; using NHibernate.Hql; using NHibernate.Type; @@ -31,7 +31,7 @@ [Serializable] public class HQLQueryPlan : IQueryPlan { - protected static readonly ILog Log = LogManager.GetLogger(typeof(HQLQueryPlan)); + protected static readonly ILogger Log = LogggerProvider.LoggerFor(typeof(HQLQueryPlan)); private readonly string _sourceQuery; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using log4net; + using NHibernate.Action; using NHibernate.Engine.Query.Sql; using NHibernate.Event; @@ -19,7 +19,7 @@ [Serializable] public class NativeSQLQueryPlan { - private static readonly ILog log = LogManager.GetLogger(typeof(NativeSQLQueryPlan)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(NativeSQLQueryPlan)); private readonly string sourceQuery; private readonly SQLCustomQuery customQuery; Modified: trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Engine.Query.Sql; using NHibernate.Util; @@ -11,7 +11,7 @@ [Serializable] public class QueryPlanCache { - private static readonly ILog log = LogManager.GetLogger(typeof(QueryPlanCache)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(QueryPlanCache)); private readonly ISessionFactoryImplementor factory; Modified: trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; -using log4net; + using NHibernate.Hql.Classic; using NHibernate.Impl; using NHibernate.SqlCommand; @@ -22,7 +22,7 @@ { public delegate int[] GetNamedParameterLocations(string parameterName); - private static readonly ILog log = LogManager.GetLogger(typeof (QueryParameters)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (QueryParameters)); private IType[] _positionalParameterTypes; private object[] _positionalParameterValues; Modified: trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -6,7 +6,7 @@ using System.Text; using Iesi.Collections; using Iesi.Collections.Generic; -using log4net; + using NHibernate.Collection; using NHibernate.Engine.Loading; using NHibernate.Impl; @@ -32,8 +32,8 @@ public class StatefulPersistenceContext : IPersistenceContext, ISerializable, IDeserializationCallback { private const int InitCollectionSize = 8; - private static readonly ILog log = LogManager.GetLogger(typeof(StatefulPersistenceContext)); - private static readonly ILog ProxyWarnLog = LogManager.GetLogger(typeof(StatefulPersistenceContext).FullName + ".ProxyWarnLog"); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(StatefulPersistenceContext)); + private static readonly ILogger ProxyWarnLog = LogggerProvider.LoggerFor(typeof(StatefulPersistenceContext).FullName + ".ProxyWarnLog"); public static readonly object NoRow = new object(); Modified: trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,7 +1,7 @@ using System; using System.Data; using System.Data.Common; -using log4net; + using NHibernate.Dialect; using NHibernate.Exceptions; @@ -28,7 +28,7 @@ /// </remarks> public class Isolater { - private static readonly ILog log = LogManager.GetLogger(typeof(Isolater)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Isolater)); /// <summary> /// Ensures that all processing actually performed by the given work will Modified: trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System.Diagnostics; -using log4net; + using NHibernate.Cache; using NHibernate.Cache.Entry; using NHibernate.Event; @@ -18,7 +18,7 @@ /// </summary> public static class TwoPhaseLoad { - private static readonly ILog log = LogManager.GetLogger(typeof(TwoPhaseLoad)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(TwoPhaseLoad)); /// <summary> /// Register the "hydrated" state of an entity instance, after the first step of 2-phase loading. Modified: trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System; -using log4net; + using NHibernate.Id; namespace NHibernate.Engine @@ -11,7 +11,7 @@ /// </summary> public class VersionValue { - private static readonly ILog log = LogManager.GetLogger(typeof(VersionValue)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(VersionValue)); private readonly object value; Modified: trunk/nhibernate/src/NHibernate/Engine/Versioning.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Versioning.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Engine/Versioning.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,4 +1,4 @@ -using log4net; + using NHibernate.Persister.Entity; using NHibernate.Type; @@ -17,7 +17,7 @@ All = 2 } - private static readonly ILog log = LogManager.GetLogger(typeof(Versioning)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(Versioning)); /// <summary> /// Increment the given version number Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Text; -using log4net; + using NHibernate.Action; using NHibernate.Collection; using NHibernate.Engine; @@ -18,7 +18,7 @@ [Serializable] public abstract class AbstractFlushingEventListener { - private static readonly ILog log = LogManager.GetLogger(typeof (AbstractFlushingEventListener)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof (AbstractFlushingEventListener)); protected virtual object Anything { Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System; -using log4net; + using NHibernate.Cache; using NHibernate.Engine; using NHibernate.Impl; @@ -15,7 +15,7 @@ [Serializable] public class AbstractLockUpgradeEventListener : AbstractReassociateEventListener { - private static readonly ILog log = LogManager.GetLogger(typeof(AbstractLockUpgradeEventListener)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractLockUpgradeEventListener)); /// <summary> /// Performs a pessimistic lock upgrade on a given entity, if needed. Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System; -using log4net; + using NHibernate.Engine; using NHibernate.Impl; using NHibernate.Persister.Entity; @@ -15,7 +15,7 @@ [Serializable] public class AbstractReassociateEventListener { - private static readonly ILog log = LogManager.GetLogger(typeof(AbstractReassociateEventListener)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractReassociateEventListener)); /// <summary> /// Associates a given entity (either transient or associated with another session) to the given session. Modified: trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using System.Collections; -using log4net; + using NHibernate.Action; using NHibernate.Classic; using NHibernate.Engine; @@ -28,7 +28,7 @@ [Serializable] public abstract class AbstractSaveEventListener : AbstractReassociateEventListener { - private static readonly ILog log = LogManager.GetLogger(typeof(AbstractSaveEventListener)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(AbstractSaveEventListener)); protected virtual bool? AssumedUnsaved { Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,5 +1,5 @@ using System; -using log4net; + using NHibernate.Engine; namespace NHibernate.Event.Default @@ -11,7 +11,7 @@ [Serializable] public class DefaultAutoFlushEventListener : AbstractFlushingEventListener, IAutoFlushEventListener { - private static readonly ILog log = LogManager.GetLogger(typeof(DefaultAutoFlushEventListener)); + private static readonly ILogger log = LogggerProvider.LoggerFor(typeof(DefaultAutoFlushEventListener)); #region IAutoFlushEventListener Members Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2010-08-07 17:35:36 UTC (rev 5126) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2010-08-08 21:40:41 UTC (rev 5127) @@ -1,6 +1,6 @@ using System; using Iesi.Collections; -using log4net; + using NHibernate.Action; using NHibernate.Classic; using NHibernate.Engine; @@ -19,7 +19,7 @@ [Serializable] ... [truncated message content] |
From: <fab...@us...> - 2010-08-07 17:35:42
|
Revision: 5126 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5126&view=rev Author: fabiomaulo Date: 2010-08-07 17:35:36 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Fix NH-2220 (by Thomas Hotz) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2010-08-07 17:24:50 UTC (rev 5125) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2010-08-07 17:35:36 UTC (rev 5126) @@ -219,5 +219,20 @@ return pagingBuilder.ToSqlString(); } + + public override bool SupportsTemporaryTables + { + get { return true; } + } + + public override string CreateTemporaryTableString + { + get { return "create temp table"; } + } + + public override bool DropTemporaryTableAfterUse() + { + return true; + } } } \ 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...> - 2010-08-07 17:24:56
|
Revision: 5125 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5125&view=rev Author: fabiomaulo Date: 2010-08-07 17:24:50 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Fix NH-2277 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Linq/Visitors/QuerySourceLocator.cs trunk/nhibernate/src/NHibernate.Test/Linq/EagerLoadTests.cs Modified: trunk/nhibernate/src/NHibernate/Linq/Visitors/QuerySourceLocator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/Visitors/QuerySourceLocator.cs 2010-08-07 16:51:50 UTC (rev 5124) +++ trunk/nhibernate/src/NHibernate/Linq/Visitors/QuerySourceLocator.cs 2010-08-07 17:24:50 UTC (rev 5125) @@ -24,7 +24,7 @@ public override void VisitMainFromClause(MainFromClause fromClause, QueryModel queryModel) { - if (_type == fromClause.ItemType) + if (_type.IsAssignableFrom(fromClause.ItemType)) { _querySource = fromClause; } Modified: trunk/nhibernate/src/NHibernate.Test/Linq/EagerLoadTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/EagerLoadTests.cs 2010-08-07 16:51:50 UTC (rev 5124) +++ trunk/nhibernate/src/NHibernate.Test/Linq/EagerLoadTests.cs 2010-08-07 17:24:50 UTC (rev 5125) @@ -1,6 +1,8 @@ using System.Linq; using NHibernate.Linq; +using NHibernate.Test.Linq.Entities; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.Linq { @@ -53,5 +55,13 @@ Assert.IsTrue(NHibernateUtil.IsInitialized(x[0].Orders)); Assert.IsTrue(NHibernateUtil.IsInitialized(x[0].Orders.First().OrderLines)); } + + [Test] + public void WhenFetchSuperclassCollectionThenNotThrows() + { + // NH-2277 + session.Executing(s => s.Query<Lizard>().Fetch(x => x.Children).ToList()).NotThrows(); + session.Close(); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-07 16:51:56
|
Revision: 5124 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5124&view=rev Author: fabiomaulo Date: 2010-08-07 16:51:50 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Fix NH-2266 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2010-08-07 12:58:27 UTC (rev 5123) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2010-08-07 16:51:50 UTC (rev 5124) @@ -527,6 +527,12 @@ private string DiscriminatorFilterFragment(string alias) { + const string abstractClassWithNoSubclassExceptionMessageTemplate = +@"The class {0} can't be instatiated and does not have mapped subclasses; +possible solutions: +- don't map the abstract class +- map the its subclasses."; + if (NeedsDiscriminator) { InFragment frag = new InFragment(); @@ -541,13 +547,20 @@ } string[] subclasses = SubclassClosure; - for (int i = 0; i < subclasses.Length; i++) + int validValuesForInFragment = 0; + foreach (string t in subclasses) { - IQueryable queryable = (IQueryable)Factory.GetEntityPersister(subclasses[i]); + var queryable = (IQueryable) Factory.GetEntityPersister(t); if (!queryable.IsAbstract) + { frag.AddValue(queryable.DiscriminatorSQLValue); + validValuesForInFragment++; + } } - + if(validValuesForInFragment == 0) + { + throw new NotSupportedException(string.Format(abstractClassWithNoSubclassExceptionMessageTemplate, subclasses[0])); + } StringBuilder buf = new StringBuilder(50).Append(" and ").Append(frag.ToFragmentString().ToString()); return buf.ToString(); Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Domain.cs 2010-08-07 16:51:50 UTC (rev 5124) @@ -0,0 +1,10 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH2266 +{ + public abstract class Token { public virtual int Id { get; set; } } + + public class SecurityToken : Token { public virtual string Owner { get; set; } } + + public abstract class TemporaryToken : Token { public virtual DateTime ExpiryDate { get; set; } } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Fixture.cs 2010-08-07 16:51:50 UTC (rev 5124) @@ -0,0 +1,19 @@ +using System; +using NHibernate.Cfg; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2266 +{ + public class Fixture + { + [Test] + public void WhenBuildSessionFactoryThenThrows() + { + Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2266.Mappings.hbm.xml", GetType().Assembly); + cfg.Executing(c => c.BuildSessionFactory()).Throws<NotSupportedException>() + .And.ValueOf.Message.Should().Contain("does not have mapped subclasses").And.Contain(typeof(TemporaryToken).FullName); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2266/Mappings.hbm.xml 2010-08-07 16:51:50 UTC (rev 5124) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2266"> + + <class name="Token" abstract="true"> + <id name="Id"> + <generator class="native" /> + </id> + <discriminator/> + <subclass name="SecurityToken"> + <property name="Owner"/> + </subclass> + <subclass name="TemporaryToken" abstract="true"> + <property name="ExpiryDate"/> + </subclass> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-07 12:58:27 UTC (rev 5123) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-07 16:51:50 UTC (rev 5124) @@ -454,6 +454,8 @@ <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2245\Model.cs" /> + <Compile Include="NHSpecificTest\NH2266\Domain.cs" /> + <Compile Include="NHSpecificTest\NH2266\Fixture.cs" /> <Compile Include="TypesTest\CharClass.cs" /> <Compile Include="TypesTest\CharClassFixture.cs" /> <Compile Include="TypesTest\DateTimeClass.cs" /> @@ -2240,6 +2242,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2266\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\CharClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1836\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\DateTimeClass.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-07 12:58:33
|
Revision: 5123 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5123&view=rev Author: fabiomaulo Date: 2010-08-07 12:58:27 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Passing test for CharType (related to NH-2276) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClassFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-07 12:34:19 UTC (rev 5122) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-07 12:58:27 UTC (rev 5123) @@ -454,6 +454,8 @@ <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2245\Model.cs" /> + <Compile Include="TypesTest\CharClass.cs" /> + <Compile Include="TypesTest\CharClassFixture.cs" /> <Compile Include="TypesTest\DateTimeClass.cs" /> <Compile Include="TypesTest\LocalDateTimeTypeFixture.cs" /> <Compile Include="TypesTest\UtcDateTimeTypeFixture.cs" /> @@ -2238,6 +2240,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\CharClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1836\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\DateTimeClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1421\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.cs 2010-08-07 12:58:27 UTC (rev 5123) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.TypesTest +{ + public class CharClass + { + public int Id { get; set; } + public virtual char NormalChar { get; set; } + public virtual char? NullableChar { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClass.hbm.xml 2010-08-07 12:58:27 UTC (rev 5123) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.TypesTest" + default-lazy="false"> + + <class name="CharClass"> + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + + <property name="NormalChar"/> + <property name="NullableChar"/> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClassFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClassFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/CharClassFixture.cs 2010-08-07 12:58:27 UTC (rev 5123) @@ -0,0 +1,36 @@ +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.TypesTest +{ + public class CharClassFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "Char"; } + } + + [Test] + public void ReadWrite() + { + var basic = new CharClass{Id=1,NormalChar = 'A'}; + + using (var s = OpenSession()) + { + s.Save(basic); + s.Flush(); + } + + using (var s = OpenSession()) + { + CharClass saved= null; + Executing.This(()=> saved = s.Get<CharClass>(1)).Should().NotThrow(); + saved.NormalChar.Should().Be('A'); + saved.NullableChar.Should().Not.Have.Value(); + + s.Delete(saved); + s.Flush(); + } + } + } +} \ 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...> - 2010-08-07 12:34:25
|
Revision: 5122 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5122&view=rev Author: fabiomaulo Date: 2010-08-07 12:34:19 +0000 (Sat, 07 Aug 2010) Log Message: ----------- minor minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 23:19:38 UTC (rev 5121) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-07 12:34:19 UTC (rev 5122) @@ -669,7 +669,6 @@ private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) { - IQueryTranslator translator = Translators[queryIndex]; QueryParameters parameter = Parameters[queryIndex]; colIndex += parameter.BindParameters(command, colIndex, session); return colIndex; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-06 23:19:44
|
Revision: 5121 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5121&view=rev Author: fabiomaulo Date: 2010-08-06 23:19:38 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Minor (renamed private field) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 23:17:22 UTC (rev 5120) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 23:19:38 UTC (rev 5121) @@ -26,7 +26,7 @@ private readonly IList<System.Type> resultCollectionGenericType = new List<System.Type>(); private readonly List<QueryParameters> parameters = new List<QueryParameters>(); private IList queryResults; - private readonly Dictionary<string, int> criteriaResultPositions = new Dictionary<string, int>(); + private readonly Dictionary<string, int> queryResultPositions = new Dictionary<string, int>(); private string cacheRegion; private int commandTimeout = RowSelection.NoValue; private bool isCacheable; @@ -320,7 +320,7 @@ public IMultiQuery Add<T>(string key, IQuery query) { ThrowIfKeyAlreadyExists(key); - criteriaResultPositions.Add(key, AddQueryForLaterExecutionAndReturnIndexOfQuery(typeof(T), query)); + queryResultPositions.Add(key, AddQueryForLaterExecutionAndReturnIndexOfQuery(typeof(T), query)); return this; } @@ -682,12 +682,12 @@ queryResults = List(); } - if (!criteriaResultPositions.ContainsKey(key)) + if (!queryResultPositions.ContainsKey(key)) { throw new InvalidOperationException(String.Format("The key '{0}' is unknown", key)); } - return queryResults[criteriaResultPositions[key]]; + return queryResults[queryResultPositions[key]]; } private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int queryIndex, int colIndex) @@ -801,7 +801,7 @@ private void ThrowIfKeyAlreadyExists(string key) { - if (criteriaResultPositions.ContainsKey(key)) + if (queryResultPositions.ContainsKey(key)) { throw new InvalidOperationException(String.Format("The key '{0}' already exists", key)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-06 23:17:29
|
Revision: 5120 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5120&view=rev Author: fabiomaulo Date: 2010-08-06 23:17:22 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Minor (added comments) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/IMultiQuery.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs Modified: trunk/nhibernate/src/NHibernate/IMultiQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IMultiQuery.cs 2010-08-06 22:29:22 UTC (rev 5119) +++ trunk/nhibernate/src/NHibernate/IMultiQuery.cs 2010-08-06 23:17:22 UTC (rev 5120) @@ -13,103 +13,124 @@ /// <summary> /// Get all the results /// </summary> + /// <remarks> + /// The result is a IList of IList. + /// </remarks> IList List(); /// <summary> - /// Adds the specified criteria to the query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// Adds the specified query to the query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> /// </summary> /// <param name="resultGenericListType">Return results in a <see cref="System.Collections.Generic.List{resultGenericListType}"/></param> - /// <param name="criteria">The criteria.</param> - /// <returns></returns> - IMultiQuery Add(System.Type resultGenericListType, IQuery criteria); + /// <param name="query">The query.</param> + /// <returns>The instance for method chain.</returns> + IMultiQuery Add(System.Type resultGenericListType, IQuery query); /// <summary> /// Add the specified HQL query to the multi query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> /// </summary> + /// <param name="query">The query</param> IMultiQuery Add<T>(IQuery query); - + /// <summary> - /// Add the specified HQL query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> - /// </summary> - /// <param name="key"></param> - /// <param name="query"></param> - /// <returns></returns> - IMultiQuery Add<T>(string key, IQuery query); - - /// <summary> - /// Add the specified HQL Query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> - /// </summary> - /// <param name="key"></param> - /// <param name="hql"></param> - /// <returns></returns> - IMultiQuery Add<T>(string key, string hql); + /// Add the specified HQL query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// </summary> + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="query">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> + IMultiQuery Add<T>(string key, IQuery query); - /// <summary> - /// Add the specified HQL query to the multi query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> - /// </summary> - IMultiQuery Add<T>(string hql); + /// <summary> + /// Add the specified HQL Query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// </summary> + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="hql">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> + IMultiQuery Add<T>(string key, string hql); - /// <summary> - /// Add a named query to the multi query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> - /// </summary> - IMultiQuery AddNamedQuery<T>(string namedQuery); + /// <summary> + /// Add the specified HQL query to the multi query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// </summary> + /// <param name="hql">The query</param> + /// <returns>The instance for method chain.</returns> + IMultiQuery Add<T>(string hql); - /// <summary> - /// Add a named query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> - /// </summary> - /// <param name="key"></param> - /// <param name="namedKey"></param> - /// <returns></returns> - IMultiQuery AddNamedQuery<T>(string key, string namedKey); + /// <summary> + /// Add a named query to the multi query. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// </summary> + /// <param name="queryName">The query</param> + /// <returns>The instance for method chain.</returns> + IMultiQuery AddNamedQuery<T>(string queryName); /// <summary> + /// Add a named query to the multi query, and associate it with the given key. The result will be contained in a <see cref="System.Collections.Generic.List{T}"/> + /// </summary> + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="queryName">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> + IMultiQuery AddNamedQuery<T>(string key, string queryName); + + /// <summary> /// Add the specified HQL query to the multi query, and associate it with the given key /// </summary> - /// <param name="key"></param> - /// <param name="query"></param> - /// <returns></returns> + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="query">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> IMultiQuery Add(string key, IQuery query); /// <summary> - /// Add the specified HQL query to the multi query + /// Add the specified HQL query to the multi query /// </summary> + /// <param name="query">The query</param> + /// <returns>The instance for method chain.</returns> IMultiQuery Add(IQuery query); /// <summary> /// Add the specified HQL Query to the multi query, and associate it with the given key /// </summary> - /// <param name="key"></param> - /// <param name="hql"></param> - /// <returns></returns> + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="hql">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> IMultiQuery Add(string key, string hql); /// <summary> /// Add the specified HQL query to the multi query /// </summary> + /// <returns>The instance for method chain.</returns> IMultiQuery Add(string hql); /// <summary> /// Add a named query to the multi query /// </summary> - IMultiQuery AddNamedQuery(string namedQuery); + /// <param name="queryName">The query</param> + /// <returns>The instance for method chain.</returns> + IMultiQuery AddNamedQuery(string queryName); /// <summary> /// Add a named query to the multi query, and associate it with the given key /// </summary> - /// <param name="key"></param> - /// <param name="namedKey"></param> - /// <returns></returns> - IMultiQuery AddNamedQuery(string key, string namedKey); + /// <param name="key">The key to get results of the specific query.</param> + /// <param name="queryName">The query</param> + /// <returns>The instance for method chain.</returns> + /// <seealso cref="GetResult(string)"/> + IMultiQuery AddNamedQuery(string key, string queryName); /// <summary> /// Enable caching of this query result set. /// </summary> /// <param name="cacheable">Should the query results be cacheable?</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetCacheable(bool cacheable); /// Set the name of the cache region. /// <param name="region">The name of a query cache region, or <see langword="null" /> /// for the default query cache</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetCacheRegion(string region); /// Should the query force a refresh of the specified query cache region? @@ -119,12 +140,14 @@ /// based on its knowledge of those events. /// <param name="forceCacheRefresh">Should the query result in a forcible refresh of /// the query cache?</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetForceCacheRefresh(bool forceCacheRefresh); /// <summary> /// The timeout for the underlying ADO query /// </summary> /// <param name="timeout"></param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetTimeout(int timeout); /// <summary> @@ -133,6 +156,7 @@ /// <param name="name">The name of the parameter</param> /// <param name="val">The possibly null parameter value</param> /// <param name="type">The NHibernate <see cref="IType"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetParameter(string name, object val, IType type); @@ -142,6 +166,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">The non-null parameter value</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetParameter(string name, object val); /// <summary> @@ -151,6 +176,7 @@ /// <param name="name">The name of the parameter</param> /// <param name="vals">A collection of values to list</param> /// <param name="type">The Hibernate type of the values</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetParameterList(string name, ICollection vals, IType type); /// <summary> @@ -160,46 +186,52 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="vals">A collection of values to list</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetParameterList(string name, ICollection vals); /// <summary> - /// Bind an instance of a <see cref="String" /> to a named parameter + /// Bind an instance of a <see cref="string" /> to a named parameter /// using an NHibernate <see cref="AnsiStringType"/>. /// </summary> /// <param name="name">The name of the parameter</param> - /// <param name="val">A non-null instance of a <see cref="String"/>.</param> + /// <param name="val">A non-null instance of a <see cref="string"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetAnsiString(string name, string val); /// <summary> - /// Bind an instance of a <see cref="Byte" /> array to a named parameter + /// Bind an instance of a <see cref="byte" /> array to a named parameter /// using an NHibernate <see cref="BinaryType"/>. /// </summary> /// <param name="name">The name of the parameter</param> - /// <param name="val">A non-null instance of a <see cref="Byte"/> array.</param> + /// <param name="val">A non-null instance of a <see cref="byte"/> array.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetBinary(string name, byte[] val); /// <summary> - /// Bind an instance of a <see cref="Boolean" /> to a named parameter + /// Bind an instance of a <see cref="bool" /> to a named parameter /// using an NHibernate <see cref="BooleanType"/>. /// </summary> /// <param name="name">The name of the parameter</param> - /// <param name="val">A non-null instance of a <see cref="Boolean"/>.</param> + /// <param name="val">A non-null instance of a <see cref="bool"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetBoolean(string name, bool val); /// <summary> - /// Bind an instance of a <see cref="Byte" /> to a named parameter + /// Bind an instance of a <see cref="byte" /> to a named parameter /// using an NHibernate <see cref="ByteType"/>. /// </summary> /// <param name="name">The name of the parameter</param> - /// <param name="val">A non-null instance of a <see cref="Byte"/>.</param> + /// <param name="val">A non-null instance of a <see cref="byte"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetByte(string name, byte val); /// <summary> - /// Bind an instance of a <see cref="Char" /> to a named parameter + /// Bind an instance of a <see cref="char" /> to a named parameter /// using an NHibernate <see cref="CharType"/>. /// </summary> /// <param name="name">The name of the parameter</param> - /// <param name="val">A non-null instance of a <see cref="Char"/>.</param> + /// <param name="val">A non-null instance of a <see cref="char"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetCharacter(string name, char val); /// <summary> @@ -208,6 +240,7 @@ /// </summary> /// <param name="val">A non-null instance of a <see cref="DateTime"/>.</param> /// <param name="name">The name of the parameter</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetDateTime(string name, DateTime val); /// <summary> @@ -216,6 +249,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Decimal"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetDecimal(string name, decimal val); /// <summary> @@ -224,6 +258,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Double"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetDouble(string name, double val); /// <summary> @@ -231,6 +266,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a persistent class</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetEntity(string name, object val); /// <summary> @@ -239,6 +275,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a persistent enumeration</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetEnum(string name, Enum val); /// <summary> @@ -247,6 +284,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Int16"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetInt16(string name, short val); /// <summary> @@ -255,6 +293,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Int32"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetInt32(string name, int val); /// <summary> @@ -263,6 +302,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Int64"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetInt64(string name, long val); /// <summary> @@ -271,6 +311,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="Single"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetSingle(string name, float val); /// <summary> @@ -279,6 +320,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="String"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetString(string name, string val); /// <summary> @@ -287,6 +329,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">An instance of a <see cref="Guid"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetGuid(string name, Guid val); /// <summary> @@ -295,6 +338,7 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="DateTime"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetTime(string name, DateTime val); /// <summary> @@ -303,11 +347,13 @@ /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="val">A non-null instance of a <see cref="DateTime"/>.</param> + /// <returns>The instance for method chain.</returns> IMultiQuery SetTimestamp(string name, DateTime val); /// <summary> /// Override the current session flush mode, just for this query. /// </summary> + /// <returns>The instance for method chain.</returns> IMultiQuery SetFlushMode(FlushMode mode); /// <summary> @@ -317,13 +363,14 @@ /// <remarks> /// The <param name="transformer"/> will be applied after the transformer of each single query. /// </remarks> + /// <returns>The instance for method chain.</returns> IMultiQuery SetResultTransformer(IResultTransformer transformer); /// <summary> - /// Returns the result of one of the Criteria based on the key + /// Returns the result of one of the query based on the key /// </summary> /// <param name="key">The key</param> - /// <returns></returns> + /// <returns>The instance for method chain.</returns> object GetResult(string key); } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 22:29:22 UTC (rev 5119) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 23:17:22 UTC (rev 5120) @@ -2,7 +2,6 @@ using System.Collections; using System.Data; using System.Diagnostics; -using System.Text.RegularExpressions; using Iesi.Collections; using log4net; using NHibernate.Cache; @@ -302,9 +301,9 @@ return Add<object>(hql); } - public IMultiQuery AddNamedQuery(string namedQuery) + public IMultiQuery AddNamedQuery(string queryName) { - return AddNamedQuery<object>(namedQuery); + return AddNamedQuery<object>(queryName); } public IMultiQuery AddNamedQuery(string key, string namedQuery) @@ -336,9 +335,9 @@ return Add<T>(key, ((ISession)session).CreateQuery(hql)); } - public IMultiQuery AddNamedQuery<T>(string namedQuery) + public IMultiQuery AddNamedQuery<T>(string queryName) { - return Add<T>(session.GetNamedQuery(namedQuery)); + return Add<T>(session.GetNamedQuery(queryName)); } public IMultiQuery SetCacheable(bool cacheable) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-06 22:29:28
|
Revision: 5119 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5119&view=rev Author: fabiomaulo Date: 2010-08-06 22:29:22 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Fix NH-1836 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/IMultiQuery.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Transform/AliasToBeanResultTransformer.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Entity.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/EntityDTO.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/IMultiQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IMultiQuery.cs 2010-08-06 19:57:08 UTC (rev 5118) +++ trunk/nhibernate/src/NHibernate/IMultiQuery.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -314,6 +314,9 @@ /// Set a strategy for handling the query results. This can be used to change /// "shape" of the query result. /// </summary> + /// <remarks> + /// The <param name="transformer"/> will be applied after the transformer of each single query. + /// </remarks> IMultiQuery SetResultTransformer(IResultTransformer transformer); /// <summary> Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 19:57:08 UTC (rev 5118) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -410,45 +410,52 @@ protected virtual IList GetResultList(IList results) { - for (int i = 0, len = results.Count; i < len; ++i) + var multiqueryHolderInstatiator = GetMultiQueryHolderInstatiator(); + int len = results.Count; + for (int i = 0; i < len; ++i) { - IList subList = (IList)results[i]; - QueryParameters parameter = Parameters[i]; - HolderInstantiator holderInstantiator = GetHolderInstantiator(parameter); - if (holderInstantiator.IsRequired) - { - for (int j = 0; j < subList.Count; j++) - { - object[] row = subList[j] as object[] ?? new[] { subList[j] }; - subList[j] = holderInstantiator.Instantiate(row); - } - - IResultTransformer transformer = - holderInstantiator.ResultTransformer; - if (transformer != null) - { - results[i] = transformer.TransformList(subList); - } - } + // First use the transformer of each query transformig each row and then the list + results[i] = GetTransformedResults((IList)results[i], GetQueryHolderInstantiator(i)); + // then use the MultiQueryTransformer (if it has some sense...) using, as source, the transformed result. + results[i] = GetTransformedResults((IList)results[i], multiqueryHolderInstatiator); } return results; } - private HolderInstantiator GetHolderInstantiator(QueryParameters parameter) + private IList GetTransformedResults(IList source, HolderInstantiator holderInstantiator) { - //if multi query has result transformer, then this will override IQuery transformations - if (resultTransformer != null) + if (!holderInstantiator.IsRequired) { - return new HolderInstantiator(resultTransformer, null); + return source; } - if (parameter.ResultTransformer != null) + for (int j = 0; j < source.Count; j++) { - return new HolderInstantiator(parameter.ResultTransformer, null); + object[] row = source[j] as object[] ?? new[] { source[j] }; + source[j] = holderInstantiator.Instantiate(row); } - return HolderInstantiator.NoopInstantiator; + + return holderInstantiator.ResultTransformer.TransformList(source); } + private HolderInstantiator GetQueryHolderInstantiator(int queryPosition) + { + // TODO : we need a test to check the behavior when the query has a 'new' istead a trasformer + // we should take the HolderInstantiator directly from QueryTranslator... taking care with Parameters. + return Parameters[queryPosition].ResultTransformer != null ? + new HolderInstantiator(Parameters[queryPosition].ResultTransformer, translators[queryPosition].ReturnAliases) + : HolderInstantiator.NoopInstantiator; + } + private HolderInstantiator GetMultiQueryHolderInstatiator() + { + return HasMultiQueryResultTrasformer() ? new HolderInstantiator(resultTransformer, null) : HolderInstantiator.NoopInstantiator; + } + + private bool HasMultiQueryResultTrasformer() + { + return resultTransformer != null; + } + protected ArrayList DoList() { bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled; Modified: trunk/nhibernate/src/NHibernate/Transform/AliasToBeanResultTransformer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Transform/AliasToBeanResultTransformer.cs 2010-08-06 19:57:08 UTC (rev 5118) +++ trunk/nhibernate/src/NHibernate/Transform/AliasToBeanResultTransformer.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -61,6 +61,10 @@ public object TransformTuple(object[] tuple, String[] aliases) { + if (aliases == null) + { + throw new ArgumentNullException("aliases"); + } object result; try Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Entity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Entity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Entity.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1836 +{ + public class Entity + { + public virtual int Id { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/EntityDTO.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/EntityDTO.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/EntityDTO.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1836 +{ + public class EntityDTO + { + public int EntityId { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Fixture.cs 2010-08-06 22:29:22 UTC (rev 5119) @@ -0,0 +1,58 @@ +using System.Collections; +using NHibernate.Transform; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH1836 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) + { + return factory.ConnectionProvider.Driver.SupportsMultipleQueries; + } + + protected override void OnSetUp() + { + base.OnSetUp(); + + using (var s = OpenSession()) + using (var t = s.BeginTransaction()) + { + s.Save(new Entity {Id = 1}); + t.Commit(); + } + } + + [Test] + public void AliasToBeanTransformerShouldApplyCorrectlyToMultiQuery() + { + using (var s = OpenSession()) + using (var t = s.BeginTransaction()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateQuery("select entity.Id as EntityId from Entity entity") + .SetResultTransformer(Transformers.AliasToBean(typeof(EntityDTO))) + ); + + IList results = null; + Executing.This(() => results = multiQuery.List()).Should().NotThrow(); + var elementOfFirstResult = ((IList)results[0])[0]; + elementOfFirstResult.Should().Be.OfType<EntityDTO>().And.ValueOf.EntityId.Should().Be(1); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + + using (var s = OpenSession()) + using (var t = s.BeginTransaction()) + { + s.CreateQuery("delete from System.Object").ExecuteUpdate(); + t.Commit(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1836/Mappings.hbm.xml 2010-08-06 22:29:22 UTC (rev 5119) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1836" + assembly="NHibernate.Test"> + <class name="Entity"> + <id name="Id"> + <generator class="assigned" /> + </id> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-06 19:57:08 UTC (rev 5118) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-06 22:29:22 UTC (rev 5119) @@ -447,6 +447,9 @@ <Compile Include="Linq\ReadonlyTestCase.cs" /> <Compile Include="NHSpecificTest\NH1421\AnEntity.cs" /> <Compile Include="NHSpecificTest\NH1421\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1836\Entity.cs" /> + <Compile Include="NHSpecificTest\NH1836\EntityDTO.cs" /> + <Compile Include="NHSpecificTest\NH1836\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2148\BugFixture.cs" /> <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> @@ -2235,6 +2238,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1836\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\DateTimeClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1421\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2148\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2010-08-06 19:57:17
|
Revision: 5118 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5118&view=rev Author: ricbrown Date: 2010-08-06 19:57:08 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Fix NH-2251 (System.FormatException mixing Future and Skip/Take) Fixed naming and position of parameters for dialects supporting parameters for limits. Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/releasenotes.txt 2010-08-06 19:57:08 UTC (rev 5118) @@ -1,9 +1,13 @@ -Build 3.0.0.Alpha1 +Build 3.0.0.Alpha2 ============================= -** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha1 +** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha2 ##### Run time ##### * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted + ##### Possible Breaking Changes ##### + * (NH-2251) - Signature change for GetLimitString in Dialect + + Build 3.0.0.Alpha1 (rev5056) ============================= Modified: trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -68,5 +68,11 @@ /// Do not report the same item multiple times as it will be assumed to be a separate parameter. /// </summary> void AddUsedTypedValues(TypedValue [] values); + + /// <summary> + /// Creates a dummy parameter index for the supplied paged value. + /// Returns null if the Dialect does not support limit parameters + /// </summary> + int? CreatePagingParameter(int value); } } Modified: trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Criterion/SubqueryExpression.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -68,7 +68,9 @@ if (criteriaImpl.FirstResult != 0 || criteriaImpl.MaxResults != RowSelection.NoValue) { - sql = factory.Dialect.GetLimitString(sql, criteriaImpl.FirstResult, criteriaImpl.MaxResults); + int? offsetParameterIndex = criteriaQuery.CreatePagingParameter(criteriaImpl.FirstResult); + int? limitParameterIndex = criteriaQuery.CreatePagingParameter(criteriaImpl.MaxResults); + sql = factory.Dialect.GetLimitString(sql, criteriaImpl.FirstResult, criteriaImpl.MaxResults, offsetParameterIndex, limitParameterIndex); } if (op != null) Modified: trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/DB2Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -212,7 +212,7 @@ /// <param name="querySqlString">A Query in the form of a SqlString.</param> /// <param name="hasOffset">Offset of the first row is not zero</param> /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { /* * "select * from (select row_number() over(orderby_clause) as rownum, " @@ -228,19 +228,19 @@ .Add(querySqlString.Substring(7)) .Add(") as tempresult where rownum "); - if (hasOffset) + if (offset > 0) { pagingBuilder .Add("between ") - .Add(Parameter.Placeholder) + .Add(Parameter.WithIndex(offsetParameterIndex.Value)) .Add("+1 and ") - .Add(Parameter.Placeholder); + .Add(Parameter.WithIndex(limitParameterIndex.Value)); } else { pagingBuilder .Add("<= ") - .Add(Parameter.Placeholder); + .Add(Parameter.WithIndex(limitParameterIndex.Value)); } return pagingBuilder.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1409,11 +1409,30 @@ /// <summary> /// Add a <c>LIMIT</c> clause to the given SQL <c>SELECT</c> + /// when the dialect supports variable limits (i.e., parameters for the limit constraints) /// </summary> /// <param name="querySqlString">A Query in the form of a SqlString.</param> /// <param name="offset">Offset of the first row to be returned by the query (zero-based)</param> /// <param name="limit">Maximum number of rows to be returned by the query</param> /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> + public virtual SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) + { + if (!SupportsVariableLimit) + return GetLimitString(querySqlString, offset, limit); + + if ((offsetParameterIndex == null) && (limitParameterIndex == null)) + return GetLimitString(querySqlString, offset, limit); + + throw new NotSupportedException("Override to support limits passed as parameters"); + } + + /// <summary> + /// Add a <c>LIMIT</c> clause to the given SQL <c>SELECT</c> + /// </summary> + /// <param name="querySqlString">A Query in the form of a SqlString.</param> + /// <param name="offset">Offset of the first row to be returned by the query (zero-based)</param> + /// <param name="limit">Maximum number of rows to be returned by the query</param> + /// <returns>A new SqlString that contains the <c>LIMIT</c> clause.</returns> public virtual SqlString GetLimitString(SqlString querySqlString, int offset, int limit) { return GetLimitString(querySqlString, offset > 0); Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -42,7 +42,7 @@ /// Note that we need to add explicitly specify the columns, because we need to be able to use them /// in a paged subselect. NH-1155 /// </remarks> - public override SqlString GetLimitString(SqlString querySqlString, int offset, int last) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int last, int? offsetParameterIndex, int? limitParameterIndex) { //dont do this paging code if there is no offset, use the //sql 2000 dialect since it just uses a top statement @@ -76,16 +76,10 @@ sortExpressions = new[] {new SqlString("CURRENT_TIMESTAMP"),}; } - Parameter limitParameter = Parameter.Placeholder; - limitParameter.ParameterPosition = 0; - - Parameter offsetParameter = Parameter.Placeholder; - offsetParameter.ParameterPosition = 1; - SqlStringBuilder result = new SqlStringBuilder() .Add("SELECT TOP (") - .Add(limitParameter) + .Add(Parameter.WithIndex(limitParameterIndex.Value)) .Add(") ") .Add(StringHelper.Join(", ", columnsOrAliases)) .Add(" FROM (") @@ -98,7 +92,7 @@ .Add(") as __hibernate_sort_row ") .Add(from) .Add(") as query WHERE query.__hibernate_sort_row > ") - .Add(offsetParameter) + .Add(Parameter.WithIndex(offsetParameterIndex.Value)) .Add(" ORDER BY query.__hibernate_sort_row"); return result.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -186,17 +186,17 @@ /// <param name="querySqlString"></param> /// <param name="hasOffset"></param> /// <returns></returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { var pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); - if (hasOffset) + if (offset > 0) { pagingBuilder.Add(", "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); } return pagingBuilder.ToSqlString(); } Modified: trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/Oracle8iDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -248,9 +248,10 @@ return new DecodeCaseFragment(this); } - public override SqlString GetLimitString(SqlString sql, bool hasOffset) + public override SqlString GetLimitString(SqlString sql, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { sql = sql.Trim(); + bool hasOffset = offset > 0; bool isForUpdate = false; if (sql.EndsWithCaseInsensitive(" for update")) { @@ -270,11 +271,11 @@ pagingSelect.Add(sql); if (hasOffset) { - pagingSelect.Add(" ) row_ where rownum <=").AddParameter().Add(") where rownum_ >").AddParameter(); + pagingSelect.Add(" ) row_ where rownum <=").AddParameter(limitParameterIndex.Value).Add(") where rownum_ >").AddParameter(offsetParameterIndex.Value); } else { - pagingSelect.Add(" ) where rownum <=").AddParameter(); + pagingSelect.Add(" ) where rownum <=").AddParameter(limitParameterIndex.Value); } if (isForUpdate) Modified: trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -133,17 +133,17 @@ /// <param name="querySqlString"></param> /// <param name="hasOffset">Offset of the first row to process in the result set is non-zero</param> /// <returns></returns> - public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { SqlStringBuilder pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); - if (hasOffset) + if (offset > 0) { pagingBuilder.Add(" offset "); - pagingBuilder.Add(Parameter.Placeholder); + pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); } return pagingBuilder.ToSqlString(); Modified: trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; +using System.Linq; using log4net; using NHibernate.Hql.Classic; using NHibernate.Impl; @@ -40,7 +41,12 @@ private object _optionalId; private string _comment; private bool _readOnly; + private int? limitParameterIndex = null; + private int? offsetParameterIndex = null; + private int wildcardSubqueryLimitParameterIndex = -1; private IDictionary<int, int> _adjustedParameterLocations; + private IDictionary<int, int> _tempPagingParameterIndexes; + private IDictionary<int, int> _pagingParameterIndexMap; private SqlString processedSQL; @@ -61,7 +67,7 @@ } public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues) - : this(positionalParameterTypes, postionalParameterValues, null, null, false, null, null, false, null) {} + : this(positionalParameterTypes, postionalParameterValues, null, null, false, null, null, false, null, null) {} public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, object[] collectionKeys) : this(positionalParameterTypes, postionalParameterValues, null, collectionKeys) {} @@ -74,12 +80,13 @@ public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool cacheable, - string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer) + string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer, IDictionary<int,int> tempPagingParameterIndexes) : this( positionalParameterTypes, positionalParameterValues, null, lockModes, rowSelection, false, cacheable, cacheRegion, comment, null, transformer) { NaturalKeyLookup = isLookupByNaturalKey; + _tempPagingParameterIndexes = tempPagingParameterIndexes; } public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, @@ -125,6 +132,16 @@ get { return _rowSelection != null; } } + public int? LimitParameterIndex + { + get { return limitParameterIndex; } + } + + public int? OffsetParameterIndex + { + get { return offsetParameterIndex; } + } + /// <summary> /// Named parameters. /// </summary> @@ -401,7 +418,11 @@ { if (sqlParameter is Parameter) { - sqlParameters.Add((Parameter)sqlParameter); + var parameter = (Parameter) sqlParameter; + if (!parameter.ParameterPosition.HasValue || (parameter.ParameterPosition >= 0)) + { + sqlParameters.Add(parameter); + } } } @@ -497,25 +518,61 @@ } } + if (_tempPagingParameterIndexes != null) + { + _pagingParameterIndexMap = new Dictionary<int, int>(); + + var pagingParameters = + sqlString.Parts + .Cast<object>() + .Where(p => p is Parameter) + .Cast<Parameter>() + .Where(p => p.ParameterPosition.HasValue && p.ParameterPosition < 0) + .ToList(); + + foreach (Parameter pagingParameter in pagingParameters) + { + int pagingValue = _tempPagingParameterIndexes[pagingParameter.ParameterPosition.Value]; + int position = parameterIndex + startParameterIndex; + _pagingParameterIndexMap.Add(position, pagingValue); + pagingParameter.ParameterPosition = position; + paramTypeList.Add(NHibernateUtil.Int32); + parameterIndex++; + totalSpan++; + } + } + if (addLimit && factory.Dialect.SupportsVariableLimit) { if (factory.Dialect.BindLimitParametersFirst) { paramTypeList.Insert(0, NHibernateUtil.Int32); + limitParameterIndex = startParameterIndex - 1; if (addOffset) { paramTypeList.Insert(0, NHibernateUtil.Int32); + offsetParameterIndex = startParameterIndex - 2; } } else { paramTypeList.Add(NHibernateUtil.Int32); + limitParameterIndex = totalSpan; if (addOffset) { paramTypeList.Add(NHibernateUtil.Int32); + offsetParameterIndex = totalSpan; + limitParameterIndex = totalSpan + 1; } } + if (addOffset && factory.Dialect.BindLimitParametersInReverseOrder) + { + int? temp = limitParameterIndex; + limitParameterIndex = offsetParameterIndex; + offsetParameterIndex = temp; + } + totalSpan += addOffset ? 2 : 1; } @@ -562,6 +619,16 @@ } } + if (_pagingParameterIndexMap != null) + { + foreach (int pagingParameterIndex in _pagingParameterIndexMap.Keys) + { + ArrayHelper.SafeSetValue(values, pagingParameterIndex, _pagingParameterIndexMap[pagingParameterIndex]); + ArrayHelper.SafeSetValue(types, pagingParameterIndex, NHibernateUtil.Int32); + ArrayHelper.SafeSetValue(sources, pagingParameterIndex, "limit_" + pagingParameterIndex); + } + } + int span = 0; for (int i = start; i < values.Count; i++) { Modified: trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -315,47 +315,41 @@ { int colIndex = 0; - colIndex = BindLimitParametersFirstIfNeccesary(command, colIndex); - colIndex = BindQueryParameters(command, colIndex); - - BindLimitParametersLastIfNeccesary(command, colIndex); + for (int queryIndex = 0; queryIndex < loaders.Count; queryIndex++) + { + int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); + colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); + BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int colIndex) + private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } } - private int BindQueryParameters(IDbCommand command, int colIndex) + private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) - { - QueryParameters parameter = parameters[i]; - colIndex += parameter.BindParameters(command, colIndex, session); - } + QueryParameters parameter = parameters[queryIndex]; + colIndex += parameter.BindParameters(command, colIndex, session); return colIndex; } - private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int colIndex) + private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < loaders.Count; i++) + int limitParametersSpan = 0; + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + limitParametersSpan += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } - return colIndex; + return limitParametersSpan; } public IMultiCriteria Add(System.Type resultGenericListType, ICriteria criteria) Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -643,33 +643,29 @@ { int colIndex = 0; - colIndex = BindLimitParametersFirstIfNeccesary(command, colIndex); - colIndex = BindQueryParameters(command, colIndex); - - BindLimitParametersLastIfNeccesary(command, colIndex); + for (int queryIndex = 0; queryIndex < queries.Count; queryIndex++) + { + int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); + colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); + BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int colIndex) + private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) + QueryParameters parameter = parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - QueryParameters parameter = parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } } - private int BindQueryParameters(IDbCommand command, int colIndex) + private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) - { - IQueryTranslator translator = Translators[i]; - QueryParameters parameter = Parameters[i]; - colIndex += parameter.BindParameters(command, colIndex, session); - } + IQueryTranslator translator = Translators[queryIndex]; + QueryParameters parameter = Parameters[queryIndex]; + colIndex += parameter.BindParameters(command, colIndex, session); return colIndex; } @@ -688,18 +684,16 @@ return queryResults[criteriaResultPositions[key]]; } - private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int colIndex) + private int BindLimitParametersFirstIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { - for (int i = 0; i < queries.Count; i++) + int limitParameterSpan = 0; + QueryParameters parameter = Parameters[queryIndex]; + RowSelection selection = parameter.RowSelection; + if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) { - QueryParameters parameter = Parameters[i]; - RowSelection selection = parameter.RowSelection; - if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst) - { - colIndex += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); - } + limitParameterSpan += Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } - return colIndex; + return limitParameterSpan; } public override string ToString() Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -26,6 +26,8 @@ private readonly string rootEntityName; private readonly string rootSQLAlias; private const int aliasCount = 0; + private int _tempPagingParameterIndex = -1; + private IDictionary<int, int> _tempPagingParameterIndexes = new Dictionary<int, int>(); private readonly IDictionary<ICriteria, ICriteriaInfoProvider> criteriaInfoMap = new Dictionary<ICriteria, ICriteriaInfoProvider>(); @@ -141,7 +143,7 @@ return new QueryParameters(typeArray, valueArray, lockModes, selection, rootCriteria.Cacheable, rootCriteria.CacheRegion, - rootCriteria.Comment, rootCriteria.LookupByNaturalKey, rootCriteria.ResultTransformer); + rootCriteria.Comment, rootCriteria.LookupByNaturalKey, rootCriteria.ResultTransformer, _tempPagingParameterIndexes); } public SqlString GetGroupBy() @@ -730,7 +732,15 @@ } } + public int? CreatePagingParameter(int value) + { + if (!Factory.Dialect.SupportsVariableLimit) + return null; + _tempPagingParameterIndexes.Add(_tempPagingParameterIndex, value); + return _tempPagingParameterIndex--; + } + public SqlString GetHavingCondition(IDictionary<string, IFilter> enabledFilters) { SqlStringBuilder condition = new SqlStringBuilder(30); Modified: trunk/nhibernate/src/NHibernate/Loader/Loader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1112,7 +1112,12 @@ if (useLimit) { sqlString = - dialect.GetLimitString(sqlString.Trim(), useOffset ? GetFirstRow(selection) : 0, GetMaxOrLimit(dialect, selection)); + dialect.GetLimitString( + sqlString.Trim(), + useOffset ? GetFirstRow(selection) : 0, + GetMaxOrLimit(dialect, selection), + queryParameters.OffsetParameterIndex, + queryParameters.LimitParameterIndex); } sqlString = PreprocessSQL(sqlString, queryParameters, dialect); @@ -1710,7 +1715,12 @@ if (useLimit) { sqlString = - dialect.GetLimitString(sqlString.Trim(), useOffset ? GetFirstRow(selection) : 0, GetMaxOrLimit(dialect, selection)); + dialect.GetLimitString( + sqlString.Trim(), + useOffset ? GetFirstRow(selection) : 0, + GetMaxOrLimit(dialect, selection), + parameters.OffsetParameterIndex, + parameters.LimitParameterIndex); } sqlString = PreprocessSQL(sqlString, parameters, dialect); Modified: trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/Parameter.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -26,6 +26,14 @@ get { return new Parameter(); } } + /// <summary> + /// Create a parameter with the specified position + /// </summary> + public static Parameter WithIndex(int position) + { + return new Parameter() { ParameterPosition = position }; + } + private Parameter() { } Modified: trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/SqlString.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -581,7 +581,18 @@ for (int i=0; i<clone.sqlParts.Length; i++) { if (clone.sqlParts[i] is Parameter) - clone.sqlParts[i] = SqlCommand.Parameter.Placeholder; + { + var originalParameter = (Parameter)clone.sqlParts[i]; + var copyParameter = SqlCommand.Parameter.Placeholder; + + if (originalParameter.ParameterPosition < 0) + { + // placeholder for sub-query parameter + copyParameter.ParameterPosition = originalParameter.ParameterPosition; + } + + clone.sqlParts[i] = copyParameter; + } } return clone; Modified: trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -110,6 +110,11 @@ return Add(Parameter.Placeholder); } + public SqlStringBuilder AddParameter(int position) + { + return Add(Parameter.WithIndex(position)); + } + /// <summary> /// Attempts to discover what type of object this is and calls the appropriate /// method. Modified: trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/DialectTest/DB2DialectFixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -24,7 +24,7 @@ " order by a, x" }); - SqlString limited = dialect.GetLimitString(sql, true); + SqlString limited = dialect.GetLimitString(sql, 1, 2, -1, -2); Assert.AreEqual( "select * from (select rownumber() over(order by a, x) as rownum, a, b, c from d where X = ? and Z = ? order by a, x) as tempresult where rownum between ?+1 and ?", limited.ToString()); Modified: trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSql2005DialectFixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -16,37 +16,37 @@ { MsSql2005Dialect d = new MsSql2005Dialect(); - SqlString str = d.GetLimitString(new SqlString("select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_ from dbo.Contact c where COALESCE(c.Rating, 0) > 0 order by c.Rating desc , c.Last_Name , c.First_Name"), 1, 10); + SqlString str = d.GetLimitString(new SqlString("select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_ from dbo.Contact c where COALESCE(c.Rating, 0) > 0 order by c.Rating desc , c.Last_Name , c.First_Name"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) Contact1_19_0_, Rating2_19_0_ FROM (select distinct c.Contact_Id as Contact1_19_0_, c._Rating as Rating2_19_0_, ROW_NUMBER() OVER(ORDER BY c.Rating DESC, c.Last_Name, c.First_Name) as __hibernate_sort_row from dbo.Contact c where COALESCE(c.Rating, 0) > 0) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT fish.id FROM fish"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT fish.id FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id FROM (SELECT fish.id, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id FROM fish fish_"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id FROM fish fish_"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id FROM (SELECT DISTINCT fish_.id, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish fish_) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id as ixx9_ FROM fish fish_"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT DISTINCT fish_.id as ixx9_ FROM fish fish_"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) ixx9_ FROM (SELECT DISTINCT fish_.id as ixx9_, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish fish_) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT * FROM fish ORDER BY name"), 5, 15); + str = d.GetLimitString(new SqlString("SELECT * FROM fish ORDER BY name"), 5, 15, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY name) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT fish.id, fish.name FROM fish ORDER BY name DESC"), 7, 28); + str = d.GetLimitString(new SqlString("SELECT fish.id, fish.name FROM fish ORDER BY name DESC"), 7, 28, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id, name FROM (SELECT fish.id, fish.name, ROW_NUMBER() OVER(ORDER BY fish.name DESC) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", @@ -54,25 +54,25 @@ str = d.GetLimitString( - new SqlString("SELECT * FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t ORDER BY name DESC"), 10, 20); + new SqlString("SELECT * FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t ORDER BY name DESC"), 10, 20, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY name DESC) as __hibernate_sort_row FROM fish LEFT JOIN (SELECT * FROM meat ORDER BY weight) AS t) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count FROM fish"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) *, some_count FROM (SELECT *, (SELECT COUNT(1) FROM fowl WHERE fish_id = fish.id) AS some_count, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT * FROM fish WHERE scales = ", Parameter.Placeholder), 1, 10); + str = d.GetLimitString(new SqlString("SELECT * FROM fish WHERE scales = ", Parameter.Placeholder), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish WHERE scales = ?) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", str.ToString()); - str = d.GetLimitString(new SqlString("SELECT f.Type, COUNT(DISTINCT f.Name) AS Name FROM Fish f GROUP BY f.Type ORDER BY COUNT(DISTINCT f.Name)"), 1, 10); + str = d.GetLimitString(new SqlString("SELECT f.Type, COUNT(DISTINCT f.Name) AS Name FROM Fish f GROUP BY f.Type ORDER BY COUNT(DISTINCT f.Name)"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) Type, Name FROM (SELECT f.Type, COUNT(DISTINCT f.Name) AS Name, ROW_NUMBER() OVER(ORDER BY COUNT(DISTINCT f.Name)) as __hibernate_sort_row FROM Fish f GROUP BY f.Type) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", @@ -95,13 +95,13 @@ { MsSql2005Dialect d = new MsSql2005Dialect(); SqlString result = - d.GetLimitString(new SqlString("select concat(a.Description,', ', a.Description) as desc from Animal a"), 1, 10); + d.GetLimitString(new SqlString("select concat(a.Description,', ', a.Description) as desc from Animal a"), 1, 10, -1, -2); System.Console.WriteLine(result); Assert.AreEqual("SELECT TOP (?) desc FROM (select concat(a.Description,', ', a.Description) as desc, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row from Animal a) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", result.ToString()); // The test use the function "cast" because cast need the keyWork "as" too SqlString str = - d.GetLimitString(new SqlString("SELECT fish.id, cast('astring, with,comma' as string) as bar FROM fish"), 1, 10); + d.GetLimitString(new SqlString("SELECT fish.id, cast('astring, with,comma' as string) as bar FROM fish"), 1, 10, -1, -2); System.Console.WriteLine(str); Assert.AreEqual( "SELECT TOP (?) id, bar FROM (SELECT fish.id, cast('astring, with,comma' as string) as bar, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM fish) as query WHERE query.__hibernate_sort_row > ? ORDER BY query.__hibernate_sort_row", Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Domain.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -6,5 +6,6 @@ { public virtual Guid Id { get; set; } public virtual string Name { get; set; } + public virtual int Ord { get; set; } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Fixture.cs 2010-08-06 19:57:08 UTC (rev 5118) @@ -1,12 +1,13 @@ using System.Linq; using NUnit.Framework; using SharpTestsEx; +using NHibernate.Criterion; namespace NHibernate.Test.NHSpecificTest.NH2251 { public class Fixture : BugTestCase { - [Test, Ignore("Executing FutureValue before Future cause the mix of parameters in SQL.")] + [Test] public void WhenUseFutureSkipTakeThenNotThrow() { using (var session = OpenSession()) @@ -47,5 +48,109 @@ ).Should().NotThrow(); } } + + [Test] + public void HqlWithOffsetAndLimit() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Name = "name1" }); + session.Save(new Foo() { Name = "name2" }); + session.Save(new Foo() { Name = "name3" }); + session.Save(new Foo() { Name = "name4" }); + + string stringParam = "name%"; + var list = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .List<Foo>(); + + Assert.That(list.Count(), Is.EqualTo(2)); + Assert.That(list[0].Name, Is.EqualTo("name2")); + Assert.That(list[1].Name, Is.EqualTo("name3")); + } + } + + [Test] + public void FuturePagedHql() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Name = "name1" }); + session.Save(new Foo() { Name = "name2" }); + session.Save(new Foo() { Name = "name3" }); + session.Save(new Foo() { Name = "name4" }); + + string stringParam = "name%"; + var list1 = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .Future<Foo>(); + + var list2 = + session.CreateQuery("from Foo f where f.Name like :stringParam order by f.Name") + .SetParameter("stringParam", stringParam) + .SetFirstResult(1) + .SetMaxResults(2) + .Future<Foo>(); + + Assert.That(list1.Count(), Is.EqualTo(2)); + Assert.That(list1.ElementAt(0).Name, Is.EqualTo("name2")); + Assert.That(list1.ElementAt(1).Name, Is.EqualTo("name3")); + + Assert.That(list2.Count(), Is.EqualTo(2)); + Assert.That(list2.ElementAt(0).Name, Is.EqualTo("name2")); + Assert.That(list2.ElementAt(1).Name, Is.EqualTo("name3")); + } + } + + [Test] + public void MultiplePagingParametersInSingleQuery() + { + using (var session = OpenSession()) + using (var transaction = session.BeginTransaction()) + { + session.Save(new Foo() { Ord = 0, Name = "00" }); + session.Save(new Foo() { Ord = 1, Name = "10" }); + session.Save(new Foo() { Ord = 2, Name = "10" }); + session.Save(new Foo() { Ord = 3, Name = "11" }); + session.Save(new Foo() { Ord = 4, Name = "10" }); + session.Save(new Foo() { Ord = 5, Name = "10" }); + session.Save(new Foo() { Ord = 6, Name = "10" }); + session.Save(new Foo() { Ord = 7, Name = "10" }); + session.Save(new Foo() { Ord = 8, Name = "10" }); + session.Save(new Foo() { Ord = 9, Name = "10" }); + + // returns 2, 3, 4, 5, 6, 7, 8 + DetachedCriteria pagedSubquery = + DetachedCriteria.For<Foo>() + .Add(Restrictions.Like("Name", "1%")) + .AddOrder(Order.Asc("Ord")) + .SetFirstResult(1) + .SetMaxResults(7) + .SetProjection(Projections.Property("Id")); + + var query = + session.CreateCriteria<Foo>() + .Add(Subqueries.PropertyIn("Id", pagedSubquery)) + .Add(Restrictions.Like("Name", "%0")) // excludes 3 + .AddOrder(Order.Asc("Ord")) + .SetFirstResult(2) + .SetMaxResults(3); + + var list = query.List<Foo>(); + + Assert.That(list.Count, Is.EqualTo(3)); + Assert.That(list[0].Ord, Is.EqualTo(5)); + Assert.That(list[1].Ord, Is.EqualTo(6)); + Assert.That(list[2].Ord, Is.EqualTo(7)); + } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml 2010-08-06 13:56:15 UTC (rev 5117) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2251/Mappings.hbm.xml 2010-08-06 19:57:08 UTC (rev 5118) @@ -7,6 +7,7 @@ <id name="Id"> <generator class="guid" /> </id> - <property name="Name"/> - </class> + <property name="Name"/> + <property name="Ord"/> + </class> </hibernate-mapping> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-06 13:56:22
|
Revision: 5117 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5117&view=rev Author: fabiomaulo Date: 2010-08-06 13:56:15 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Apply NH-1135 with modifications to avoid breaking changes Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/basic_mapping.xml trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/NHibernateUtil.cs trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs Modified: trunk/nhibernate/doc/reference/modules/basic_mapping.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-08-06 13:56:15 UTC (rev 5117) @@ -2283,7 +2283,19 @@ <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> <entry>Default when no <literal>type</literal> attribute specified.</entry> </row> - <row> + <row> + <entry><literal>LocalDateTime</literal></entry> + <entry><literal>System.DateTime</literal></entry> + <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> + <entry>Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Local</literal></entry> + </row> + <row> + <entry><literal>UtcDateTime</literal></entry> + <entry><literal>System.DateTime</literal></entry> + <entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry> + <entry>Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Utc</literal></entry> + </row> + <row> <entry><literal>Decimal</literal></entry> <entry><literal>System.Decimal</literal></entry> <entry><literal>DbType.Decimal</literal></entry> Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-06 13:56:15 UTC (rev 5117) @@ -851,9 +851,12 @@ <Compile Include="Tool\hbm2ddl\ScriptSplitter.cs" /> <Compile Include="Transaction\AdoNetWithDistrubtedTransactionFactory.cs" /> <Compile Include="Transform\ToListResultTransformer.cs" /> + <Compile Include="Type\AbstractDateTimeSpecificKindType.cs" /> <Compile Include="Type\DbTimestampType.cs" /> <Compile Include="Type\DefaultCollectionTypeFactory.cs" /> <Compile Include="Bytecode\ICollectionTypeFactory.cs" /> + <Compile Include="Type\LocalDateTimeType.cs" /> + <Compile Include="Type\UtcDateTimeType.cs" /> <Compile Include="Util\ExpressionsHelper.cs" /> <Compile Include="Util\NullableDictionary.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\PathHelper.cs" /> Modified: trunk/nhibernate/src/NHibernate/NHibernateUtil.cs =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -121,6 +121,16 @@ public static readonly NullableType DateTime2 = new DateTime2Type(); /// <summary> + /// NHibernate local date type + /// </summary> + public static readonly NullableType LocalDateTime = new LocalDateTimeType(); + + /// <summary> + /// NHibernate utc date type + /// </summary> + public static readonly NullableType UtcDateTime = new UtcDateTimeType(); + + /// <summary> /// NHibernate date type /// </summary> public static readonly NullableType DateTimeOffset = new DateTimeOffsetType(); Added: trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/AbstractDateTimeSpecificKindType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,65 @@ +using System; +using System.Data; + +namespace NHibernate.Type +{ + [Serializable] + public abstract class AbstractDateTimeSpecificKindType : DateTimeType + { + protected abstract DateTimeKind DateTimeKind { get; } + + protected virtual DateTime CreateDateTime(DateTime dateValue) + { + return new DateTime(dateValue.Year, dateValue.Month, dateValue.Day, dateValue.Hour, dateValue.Minute, dateValue.Second, DateTimeKind); + } + + public override object FromStringValue(string xml) + { + return DateTime.SpecifyKind(DateTime.Parse(xml), DateTimeKind); + } + + public override int GetHashCode(object x, EntityMode entityMode) + { + int hashCode = base.GetHashCode(x, entityMode); + unchecked + { + hashCode = 31*hashCode + ((DateTime) x).Kind.GetHashCode(); + } + return hashCode; + } + + public override bool IsEqual(object x, object y) + { + if (x == y) + { + return true; + } + + if (x == null || y == null) + { + return false; + } + + return base.IsEqual(x, y) && ((DateTime) x).Kind == ((DateTime) y).Kind; + } + + public override void Set(IDbCommand st, object value, int index) + { + var dateValue = (DateTime) value; + ((IDataParameter) st.Parameters[index]).Value = CreateDateTime(dateValue); + } + + public override object Get(IDataReader rs, int index) + { + try + { + DateTime dbValue = Convert.ToDateTime(rs[index]); + return CreateDateTime(dbValue); + } + catch (Exception ex) + { + throw new FormatException(string.Format("Input string '{0}' was not in the correct format.", rs[index]), ex); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/LocalDateTimeType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +using System; + +namespace NHibernate.Type +{ + [Serializable] + public class LocalDateTimeType : AbstractDateTimeSpecificKindType + { + protected override DateTimeKind DateTimeKind + { + get { return DateTimeKind.Local; } + } + + public override string Name + { + get { return "LocalDateTime"; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -238,6 +238,8 @@ RegisterType(NHibernateUtil.YesNo, new[] { "yes_no" }); RegisterType(NHibernateUtil.Ticks, new[] { "ticks" }); RegisterType(NHibernateUtil.TimeAsTimeSpan, EmptyAliases); + RegisterType(NHibernateUtil.LocalDateTime, new[] { "localdatetime" }); + RegisterType(NHibernateUtil.UtcDateTime, new[] { "utcdatetime" }); RegisterType(NHibernateUtil.Currency, new[] { "currency" }, (p, s) => GetType(NHibernateUtil.Currency, p, s, st => new CurrencyType(st))); Added: trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Type/UtcDateTimeType.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +using System; + +namespace NHibernate.Type +{ + [Serializable] + public class UtcDateTimeType : AbstractDateTimeSpecificKindType + { + protected override DateTimeKind DateTimeKind + { + get { return DateTimeKind.Utc; } + } + + public override string Name + { + get { return "UtcDateTime"; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-06 13:56:15 UTC (rev 5117) @@ -451,6 +451,9 @@ <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2245\Model.cs" /> + <Compile Include="TypesTest\DateTimeClass.cs" /> + <Compile Include="TypesTest\LocalDateTimeTypeFixture.cs" /> + <Compile Include="TypesTest\UtcDateTimeTypeFixture.cs" /> <Compile Include="UtilityTest\ReflectionHelperIsMethodOfTests.cs" /> <Compile Include="UtilityTest\ReflectionHelperTest.cs" /> <Compile Include="Linq\RegresstionTests.cs" /> @@ -2232,6 +2235,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\DateTimeClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1421\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2148\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2245\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,38 @@ +using System; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// Summary description for GuidClass. + /// </summary> + public class DateTimeClass + { + private int _id; + private DateTime? _utcDateTimeValue; + private DateTime? _localDateTimeValue; + public DateTimeClass() + { + NormalDateTimeValue = DateTime.Today; + } + + public int Id + { + get { return _id; } + set { _id = value; } + } + + public DateTime? UtcDateTimeValue + { + get { return _utcDateTimeValue; } + set { _utcDateTimeValue = value; } + } + + public DateTime? LocalDateTimeValue + { + get { return _localDateTimeValue; } + set { _localDateTimeValue = value; } + } + + public DateTime NormalDateTimeValue { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeClass.hbm.xml 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> + + <class + name="NHibernate.Test.TypesTest.DateTimeClass, NHibernate.Test" + table="bc_datetime" + > + + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + + <property name="UtcDateTimeValue" type="UtcDateTime" column="utcdatec"/> + <property name="LocalDateTimeValue" type="LocalDateTime" column="localdatec"/> + <property name="NormalDateTimeValue" /> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs 2010-08-05 16:11:15 UTC (rev 5116) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/DateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -1,6 +1,7 @@ using System; using NHibernate.Type; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.TypesTest { @@ -43,5 +44,15 @@ value2 = ((DateTime)value2).AddHours(2); Assert.IsFalse(value1 == value2, "value2 was changed, value1 should not have changed also."); } + + [Test] + public void EqualityShouldIgnoreKindAndMillisecond() + { + var type = (DateTimeType)NHibernateUtil.DateTime; + var localTime = DateTime.Now; + var unspecifiedKid = new DateTime(localTime.Year, localTime.Month, localTime.Day, localTime.Hour, localTime.Minute, localTime.Second, 0, DateTimeKind.Unspecified); + type.Satisfy(t => t.IsEqual(localTime, unspecifiedKid)); + type.Satisfy(t => t.IsEqual(localTime, unspecifiedKid, EntityMode.Poco)); + } } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/LocalDateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// The Unit Tests for the UtcDateTimeType. + /// </summary> + [TestFixture] + public class LocalDateTimeTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "DateTime"; } + } + + [Test] + public void ReadWrite() + { + DateTime val = DateTime.UtcNow; + DateTime expected = new DateTime(val.Year, val.Month, val.Day, val.Hour, val.Minute, val.Second, DateTimeKind.Local); + + DateTimeClass basic = new DateTimeClass(); + basic.Id = 1; + basic.LocalDateTimeValue = val; + + ISession s = OpenSession(); + s.Save(basic); + s.Flush(); + s.Close(); + + s = OpenSession(); + basic = (DateTimeClass) s.Load(typeof (DateTimeClass), 1); + + Assert.AreEqual(DateTimeKind.Local, basic.LocalDateTimeValue.Value.Kind); + Assert.AreEqual(expected, basic.LocalDateTimeValue.Value); + + s.Delete(basic); + s.Flush(); + s.Close(); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/UtcDateTimeTypeFixture.cs 2010-08-06 13:56:15 UTC (rev 5117) @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + /// <summary> + /// The Unit Tests for the UtcDateTimeType. + /// </summary> + [TestFixture] + public class UtcDateTimeTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "DateTime"; } + } + + [Test] + public void ReadWrite() + { + DateTime val = DateTime.UtcNow; + DateTime expected = new DateTime(val.Year, val.Month, val.Day, val.Hour, val.Minute, val.Second, DateTimeKind.Utc); + + DateTimeClass basic = new DateTimeClass(); + basic.Id = 1; + basic.UtcDateTimeValue = val; + + ISession s = OpenSession(); + s.Save(basic); + s.Flush(); + s.Close(); + + s = OpenSession(); + basic = (DateTimeClass) s.Load(typeof (DateTimeClass), 1); + + Assert.AreEqual(DateTimeKind.Utc, basic.UtcDateTimeValue.Value.Kind); + Assert.AreEqual(expected, basic.UtcDateTimeValue.Value); + + s.Delete(basic); + s.Flush(); + s.Close(); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-05 16:11:21
|
Revision: 5116 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5116&view=rev Author: fabiomaulo Date: 2010-08-05 16:11:15 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Fix NH-1421 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/AnEntity.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2010-08-05 12:39:25 UTC (rev 5115) +++ trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2010-08-05 16:11:15 UTC (rev 5116) @@ -657,6 +657,14 @@ throw new ArgumentException("Parameter " + name + " does not exist as a named parameter in [" + QueryString + "]"); } + if (type == null) + { + throw new ArgumentNullException("type","Can't determine the type of parameter-list elements."); + } + if(vals.Count == 0) + { + throw new QueryException(string.Format("An empty parameter-list generate wrong SQL; parameter name '{0}'", name)); + } namedParameterLists[name] = new TypedValue(type, vals, session.EntityMode); return this; } @@ -665,7 +673,7 @@ { if (vals == null) { - throw new QueryException("Collection must be not null!"); + throw new ArgumentNullException("vals"); } if (!parameterMetadata.NamedParameterNames.Contains(name)) @@ -676,7 +684,7 @@ if (vals.Count == 0) { - SetParameterList(name, vals, null); + SetParameterList(name, vals, GuessType(vals.GetCollectionElementType())); } else { @@ -690,12 +698,12 @@ public IQuery SetParameterList(string name, object[] vals, IType type) { - return SetParameterList(name, new ArrayList(vals), type); + return SetParameterList(name, vals as ICollection, type); } public IQuery SetParameterList(string name, object[] vals) { - return SetParameterList(name, new ArrayList(vals)); + return SetParameterList(name, vals as ICollection); } #endregion Modified: trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs 2010-08-05 12:39:25 UTC (rev 5115) +++ trunk/nhibernate/src/NHibernate/Util/ReflectHelper.cs 2010-08-05 16:11:15 UTC (rev 5116) @@ -1,5 +1,7 @@ using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; using System.Reflection; using System.Text; using log4net; @@ -621,5 +623,41 @@ { return method.Name.Substring(4); } + + public static System.Type GetCollectionElementType(this IEnumerable collectionInstance) + { + if (collectionInstance == null) + { + throw new ArgumentNullException("collectionInstance"); + } + var collectionType = collectionInstance.GetType(); + return GetCollectionElementType(collectionType); + } + + public static System.Type GetCollectionElementType(System.Type collectionType) + { + if (collectionType == null) + { + throw new ArgumentNullException("collectionType"); + } + if (collectionType.IsArray) + { + return collectionType.GetElementType(); + } + if (collectionType.IsGenericType) + { + List<System.Type> interfaces = collectionType.GetInterfaces().Where(t => t.IsGenericType).ToList(); + if (collectionType.IsInterface) + { + interfaces.Add(collectionType); + } + var enumerableInterface = interfaces.FirstOrDefault(t => t.GetGenericTypeDefinition() == typeof (IEnumerable<>)); + if (enumerableInterface != null) + { + return enumerableInterface.GetGenericArguments()[0]; + } + } + return null; + } } } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/AnEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/AnEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/AnEntity.cs 2010-08-05 16:11:15 UTC (rev 5116) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1421 +{ + public class AnEntity + { + public virtual long Id { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Fixture.cs 2010-08-05 16:11:15 UTC (rev 5116) @@ -0,0 +1,62 @@ +using System; +using System.Collections; +using NUnit.Framework; +using SharpTestsEx; +using System.Collections.ObjectModel; + +namespace NHibernate.Test.NHSpecificTest.NH1421 +{ + public class Fixture: BugTestCase + { + [Test] + public void WhenParameterListIsEmptyArrayUsingQueryThenDoesNotTrowsNullReferenceException() + { + using (var s = OpenSession()) + { + var query = s.CreateQuery("from AnEntity a where a.id in (:myList)"); + query.Executing(x => x.SetParameterList("myList", new long[0])).Throws().And.Exception.Should().Not.Be.InstanceOf<NullReferenceException>(); + } + } + + [Test] + public void WhenParameterListIsEmptyGenericCollectionUsingQueryThenDoesNotTrowsNullReferenceException() + { + using (var s = OpenSession()) + { + var query = s.CreateQuery("from AnEntity a where a.id in (:myList)"); + query.Executing(x => x.SetParameterList("myList", new Collection<long>())).Throws().And.Exception.Should().Not.Be.InstanceOf<NullReferenceException>(); + } + } + + [Test] + public void WhenParameterListIsEmptyCollectionUsingQueryThenTrowsArgumentException() + { + using (var s = OpenSession()) + { + var query = s.CreateQuery("from AnEntity a where a.id in (:myList)"); + query.Executing(x => x.SetParameterList("myList", new ArrayList())).Throws().And.Exception.Should().Be.InstanceOf<ArgumentException>(); + } + } + + [Test] + public void WhenParameterListIsNullUsingQueryThenTrowsArgumentException() + { + using (var s = OpenSession()) + { + var query = s.CreateQuery("from AnEntity a where a.id in (:myList)"); + query.Executing(x => x.SetParameterList("myList", null)).Throws().And.Exception.Should().Be.InstanceOf<ArgumentNullException>(); + } + } + + [Test] + public void WhenParameterListIsEmptyUsingQueryThenDoesNotTrowsNullReferenceException() + { + using (var s = OpenSession()) + { + var query = s.CreateQuery("from AnEntity a where a.id in (:myList)"); + query.Executing(x => x.SetParameterList("myList", new long[0]).List()).Throws().And.Exception.Should().Not.Be.InstanceOf<NullReferenceException>(); + } + } + + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1421/Mappings.hbm.xml 2010-08-05 16:11:15 UTC (rev 5116) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1421"> + + <class name="AnEntity"> + <id name="Id"> + <generator class="assigned" /> + </id> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-05 12:39:25 UTC (rev 5115) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-05 16:11:15 UTC (rev 5116) @@ -445,6 +445,8 @@ <Compile Include="Linq\QueryCacheableTests.cs" /> <Compile Include="Linq\QueryReuseTests.cs" /> <Compile Include="Linq\ReadonlyTestCase.cs" /> + <Compile Include="NHSpecificTest\NH1421\AnEntity.cs" /> + <Compile Include="NHSpecificTest\NH1421\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2148\BugFixture.cs" /> <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2245\Fixture.cs" /> @@ -2230,6 +2232,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1421\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2148\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2245\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2257\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-05 12:39:36
|
Revision: 5115 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5115&view=rev Author: fabiomaulo Date: 2010-08-05 12:39:25 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Minor (made cross RDBMS) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/Linq/Mappings/Patient.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/Linq/Mappings/Patient.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/Mappings/Patient.hbm.xml 2010-08-05 12:30:38 UTC (rev 5114) +++ trunk/nhibernate/src/NHibernate.Test/Linq/Mappings/Patient.hbm.xml 2010-08-05 12:39:25 UTC (rev 5115) @@ -4,7 +4,7 @@ <id name="Id" column="PatientId" type="Int64"> <generator class="native" /> </id> - <property type="System.Boolean" not-null="true" name="Active" column="[Active]" /> + <property type="System.Boolean" not-null="true" name="Active" column="`Active`" /> <many-to-one name="Physician" cascade="none" column="PhysicianId" not-null="true" class="Physician" /> <bag name="PatientRecords" inverse="true" lazy="true" cascade="all"> <key column="PatientId" /> @@ -16,32 +16,32 @@ <id name="Id" column="PhysicianId" type="Int64"> <generator class="native" /> </id> - <property type="System.String" not-null="true" name="Name" column="[Name]" /> + <property type="System.String" not-null="true" name="Name" column="`Name`" /> </class> <class name="PatientRecord" table="PatientRecords"> <id name="Id" column="PatientRecordId" type="System.Int64"> <generator class="native" /> </id> - <property type="NHibernate.Test.Linq.Entities.Gender, NHibernate.Test" not-null="true" name="Gender" column="[Gender]" /> - <property type="System.DateTime" not-null="true" name="BirthDate" column="[BirthDate]" /> + <property type="NHibernate.Test.Linq.Entities.Gender, NHibernate.Test" not-null="true" name="Gender" column="`Gender`" /> + <property type="System.DateTime" not-null="true" name="BirthDate" column="`BirthDate`" /> <component name="Name" class="PatientName"> - <property type="System.String" not-null="true" name="FirstName" column="[FirstName]" /> - <property type="System.String" not-null="true" name="LastName" column="[LastName]" /> + <property type="System.String" not-null="true" name="FirstName" column="`FirstName`" /> + <property type="System.String" not-null="true" name="LastName" column="`LastName`" /> </component> <component name="Address" class="PatientAddress"> - <property type="System.String" name="AddressLine1" column="[AddressLine1]" /> + <property type="System.String" name="AddressLine1" column="`AddressLine1`" /> - <property type="System.String" name="AddressLine2" column="[AddressLine2]" /> + <property type="System.String" name="AddressLine2" column="`AddressLine2`" /> - <property type="System.String" name="City" column="[City]" /> + <property type="System.String" name="City" column="`City`" /> <many-to-one name="State" cascade="none" column="StateId" class="State" /> - <property type="System.String" name="ZipCode" column="[ZipCode]" /> + <property type="System.String" name="ZipCode" column="`ZipCode`" /> </component> @@ -53,7 +53,7 @@ <id name="Id" column="StateId" type="System.Int64"> <generator class="native" /> </id> - <property type="System.String" not-null="true" name="Abbreviation" column="[Abbreviation]" /> - <property type="System.String" not-null="true" name="FullName" column="[FullName]" /> + <property type="System.String" not-null="true" name="Abbreviation" column="`Abbreviation`" /> + <property type="System.String" not-null="true" name="FullName" column="`FullName`" /> </class> </hibernate-mapping> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-05 12:30:44
|
Revision: 5114 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5114&view=rev Author: fabiomaulo Date: 2010-08-05 12:30:38 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Fix NH-2149 (by Paul Wideman) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-08-05 12:20:09 UTC (rev 5113) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-08-05 12:30:38 UTC (rev 5114) @@ -12,6 +12,15 @@ RegisterColumnType(DbType.Guid, "BINARY(16)"); } + protected override void RegisterCastTypes() { + base.RegisterCastTypes(); + // MySql 5 also supports DECIMAL as a cast type target + // http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html + RegisterCastType(DbType.Decimal, "DECIMAL"); + RegisterCastType(DbType.Double, "DECIMAL"); + RegisterCastType(DbType.Single, "DECIMAL"); + } + //Reference 5.x //Numeric: //http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-05 12:20:09 UTC (rev 5113) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-05 12:30:38 UTC (rev 5114) @@ -5,6 +5,7 @@ using NHibernate.Dialect.Function; using NHibernate.Dialect.Schema; using NHibernate.SqlCommand; +using NHibernate.SqlTypes; using NHibernate.Util; using Environment=NHibernate.Cfg.Environment; @@ -32,85 +33,90 @@ /// </remarks> public class MySQLDialect : Dialect { - public MySQLDialect() - { - //Reference 3-4.x - //Numeric: - //http://dev.mysql.com/doc/refman/4.1/en/numeric-type-overview.html - //Date and time: - //http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html - //String: - //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html - //default: - //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html + private readonly TypeNames castTypeNames = new TypeNames(); - //string type - RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 65535, "TEXT"); - RegisterColumnType(DbType.AnsiStringFixedLength, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, 65535, "TEXT"); - RegisterColumnType(DbType.AnsiString, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); - RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); - RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.String, "VARCHAR(255)"); - RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); - RegisterColumnType(DbType.String, 65535, "TEXT"); - RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); - //todo: future: add compatibility with decimal??? - //An unpacked fixed-point number. Behaves like a CHAR column; - //\x93unpacked\x94 means the number is stored as a string, using one character for each digit of the value. - //M is the total number of digits and D is the number of digits after the decimal point - //DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] + public MySQLDialect() + { + //Reference 3-4.x + //Numeric: + //http://dev.mysql.com/doc/refman/4.1/en/numeric-type-overview.html + //Date and time: + //http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html + //String: + //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html + //default: + //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html - //binary type: - RegisterColumnType(DbType.Binary, "LONGBLOB"); - RegisterColumnType(DbType.Binary, 127, "TINYBLOB"); - RegisterColumnType(DbType.Binary, 65535, "BLOB"); - RegisterColumnType(DbType.Binary, 16777215, "MEDIUMBLOB"); - //Numeric type: - RegisterColumnType(DbType.Boolean, "TINYINT(1)"); // SELECT IF(0, 'true', 'false'); - RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); - RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); - 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"); - RegisterColumnType(DbType.Int32, "INTEGER"); //alias INT - //As of MySQL 4.1, SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. - RegisterColumnType(DbType.Int64, "BIGINT"); - //!!! - //Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision - RegisterColumnType(DbType.Single, "FLOAT"); - RegisterColumnType(DbType.Byte, 1, "BIT"); //Like TinyInt(i) - RegisterColumnType(DbType.SByte, "TINYINT"); + //string type + RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 65535, "TEXT"); + RegisterColumnType(DbType.AnsiStringFixedLength, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); + RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, 65535, "TEXT"); + RegisterColumnType(DbType.AnsiString, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); + RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.String, "VARCHAR(255)"); + RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); + RegisterColumnType(DbType.String, 65535, "TEXT"); + RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); + //todo: future: add compatibility with decimal??? + //An unpacked fixed-point number. Behaves like a CHAR column; + //\x93unpacked\x94 means the number is stored as a string, using one character for each digit of the value. + //M is the total number of digits and D is the number of digits after the decimal point + //DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] - //UNSINGED Numeric type: - RegisterColumnType(DbType.UInt16, "SMALLINT UNSIGNED"); - RegisterColumnType(DbType.UInt32, "INTEGER UNSIGNED"); - RegisterColumnType(DbType.UInt64, "BIGINT UNSIGNED"); - //there are no other DbType unsigned...but mysql support Float unsigned, double unsigned, etc.. + //binary type: + RegisterColumnType(DbType.Binary, "LONGBLOB"); + RegisterColumnType(DbType.Binary, 127, "TINYBLOB"); + RegisterColumnType(DbType.Binary, 65535, "BLOB"); + RegisterColumnType(DbType.Binary, 16777215, "MEDIUMBLOB"); - //Date and time type: - RegisterColumnType(DbType.Date, "DATE"); - RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Time, "TIME"); + //Numeric type: + RegisterColumnType(DbType.Boolean, "TINYINT(1)"); // SELECT IF(0, 'true', 'false'); + RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); + RegisterColumnType(DbType.Currency, "MONEY"); + RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); + 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"); + RegisterColumnType(DbType.Int32, "INTEGER"); //alias INT + //As of MySQL 4.1, SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. + RegisterColumnType(DbType.Int64, "BIGINT"); + //!!! + //Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision + RegisterColumnType(DbType.Single, "FLOAT"); + RegisterColumnType(DbType.Byte, 1, "BIT"); //Like TinyInt(i) + RegisterColumnType(DbType.SByte, "TINYINT"); - //special: - RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + //UNSINGED Numeric type: + RegisterColumnType(DbType.UInt16, "SMALLINT UNSIGNED"); + RegisterColumnType(DbType.UInt32, "INTEGER UNSIGNED"); + RegisterColumnType(DbType.UInt64, "BIGINT UNSIGNED"); + //there are no other DbType unsigned...but mysql support Float unsigned, double unsigned, etc.. - //functions: - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "concat(", ",", ")")); + //Date and time type: + RegisterColumnType(DbType.Date, "DATE"); + RegisterColumnType(DbType.DateTime, "DATETIME"); + RegisterColumnType(DbType.Time, "TIME"); - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver"; - } + //special: + RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + RegisterCastTypes(); + + //functions: + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "concat(", ",", ")")); + + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver"; + } + /// <summary></summary> public override string AddColumnString { @@ -245,5 +251,57 @@ { get { return "create temporary table if not exists"; } } + + protected virtual void RegisterCastTypes() + { + // According to the MySql documentation (http://dev.mysql.com/doc/refman/4.1/en/cast-functions.html) + // only a few values are supported for the cast target type: BINARY, CHAR, DATE, DATETIME, + // SIGNED, TIME, and UNSIGNED. So we must limit our possible cast types to these + + // The Dialect.GetCastTypeName() method uses the default length, precision, and + // scale values, so there's no need to consider those values here either, just use the defaults + RegisterCastType(DbType.AnsiString, "CHAR"); + RegisterCastType(DbType.AnsiStringFixedLength, "CHAR"); + RegisterCastType(DbType.String, "CHAR"); + RegisterCastType(DbType.StringFixedLength, "CHAR"); + RegisterCastType(DbType.Binary, "BINARY"); + RegisterCastType(DbType.Int16, "SIGNED"); + RegisterCastType(DbType.Int32, "SIGNED"); + RegisterCastType(DbType.Int64, "SIGNED"); + RegisterCastType(DbType.UInt16, "UNSIGNED"); + RegisterCastType(DbType.UInt32, "UNSIGNED"); + RegisterCastType(DbType.UInt64, "UNSIGNED"); + RegisterCastType(DbType.Guid, "CHAR(40)"); + RegisterCastType(DbType.Time, "TIME"); + RegisterCastType(DbType.Date, "DATE"); + RegisterCastType(DbType.DateTime, "DATETIME"); + } + + /// <summary> + /// Suclasses register a typename for the given type code, to be used in CAST() + /// statements. + /// </summary> + /// <param name="code">The typecode</param> + /// <param name="name">The database type name</param> + protected void RegisterCastType(DbType code, string name) + { + castTypeNames.Put(code, name); + } + + /// <summary> + /// Get the name of the database type appropriate for casting operations + /// (via the CAST() SQL function) for the given <see cref="SqlType"/> typecode. + /// </summary> + /// <param name="sqlType">The <see cref="SqlType"/> typecode </param> + /// <returns> The database type name </returns> + public override string GetCastTypeName(SqlType sqlType) + { + string result = castTypeNames.Get(sqlType.DbType); + if (result == null) + { + throw new HibernateException(string.Format("No CAST() type mapping for SqlType {0}", sqlType)); + } + return result; + } } } \ 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...> - 2010-08-05 12:20:16
|
Revision: 5113 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5113&view=rev Author: fabiomaulo Date: 2010-08-05 12:20:09 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Partial fix of NH-2263 2 step (thanks to Patrick Earl) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Context/ManagedWebSessionContext.cs trunk/nhibernate/src/NHibernate/Context/WebSessionContext.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Context/ReflectiveHttpContext.cs Modified: trunk/nhibernate/src/NHibernate/Context/ManagedWebSessionContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Context/ManagedWebSessionContext.cs 2010-08-05 11:06:46 UTC (rev 5112) +++ trunk/nhibernate/src/NHibernate/Context/ManagedWebSessionContext.cs 2010-08-05 12:20:09 UTC (rev 5113) @@ -1,13 +1,12 @@ using System; using System.Collections; -using System.Web; using NHibernate.Engine; namespace NHibernate.Context { /// <summary> /// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> - /// for each <see cref="System.Web.HttpContext"/>. + /// for each System.Web.HttpContext. /// Works only with Web Applications. /// </summary> [Serializable] @@ -23,7 +22,7 @@ public ISession CurrentSession() { - ISession currentSession = GetExistingSession(HttpContext.Current, factory); + ISession currentSession = GetExistingSession(ReflectiveHttpContext.HttpContextCurrentGetter(), factory); if (currentSession == null) { throw new HibernateException("No session bound to the current HttpContext"); @@ -33,20 +32,20 @@ #region Static API - public static void Bind(HttpContext context, ISession session) + public static void Bind(object httpContext, ISession session) { - GetSessionMap(context, true)[((ISessionImplementor) session).Factory] = session; + GetSessionMap(httpContext, true)[((ISessionImplementor) session).Factory] = session; } - public static bool HasBind(HttpContext context, ISessionFactory factory) + public static bool HasBind(object httpContext, ISessionFactory factory) { - return GetExistingSession(context, factory) != null; + return GetExistingSession(httpContext, factory) != null; } - public static ISession Unbind(HttpContext context, ISessionFactory factory) + public static ISession Unbind(object httpContext, ISessionFactory factory) { ISession result = null; - IDictionary sessionMap = GetSessionMap(context, false); + IDictionary sessionMap = GetSessionMap(httpContext, false); if (sessionMap != null) { result = sessionMap[factory] as ISession; @@ -57,9 +56,9 @@ #endregion - private static ISession GetExistingSession(HttpContext context, ISessionFactory factory) + private static ISession GetExistingSession(object httpContext, ISessionFactory factory) { - IDictionary sessionMap = GetSessionMap(context, false); + IDictionary sessionMap = GetSessionMap(httpContext, false); if (sessionMap == null) { return null; @@ -68,15 +67,16 @@ return sessionMap[factory] as ISession; } - private static IDictionary GetSessionMap(HttpContext context, bool create) + private static IDictionary GetSessionMap(object httpContext, bool create) { - IDictionary map = context.Items[SessionFactoryMapKey] as IDictionary; + IDictionary httpContextItems = ReflectiveHttpContext.HttpContextItemsGetter(httpContext); + var map = httpContextItems[SessionFactoryMapKey] as IDictionary; if (map == null && create) { map = new Hashtable(); - context.Items[SessionFactoryMapKey] = map; + httpContextItems[SessionFactoryMapKey] = map; } return map; } } -} +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Context/ReflectiveHttpContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Context/ReflectiveHttpContext.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Context/ReflectiveHttpContext.cs 2010-08-05 12:20:09 UTC (rev 5113) @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using System.Linq.Expressions; +using System.Reflection; + +namespace NHibernate.Context +{ + /// <summary> + /// This class allows access to the HttpContext without referring to HttpContext at compile time. + /// The accessors are cached as delegates for performance. + /// </summary> + public static class ReflectiveHttpContext + { + static ReflectiveHttpContext() + { + CreateCurrentHttpContextGetter(); + CreateHttpContextItemsGetter(); + } + + public static Func<object> HttpContextCurrentGetter { get; private set; } + + public static Func<object, IDictionary> HttpContextItemsGetter { get; private set; } + + public static IDictionary HttpContextCurrentItems + { + get { return HttpContextItemsGetter(HttpContextCurrentGetter()); } + } + + private static System.Type HttpContextType + { + get { return System.Type.GetType("System.Web.HttpContext, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); } + } + + private static void CreateCurrentHttpContextGetter() + { + PropertyInfo currentProperty = HttpContextType.GetProperty("Current", BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy); + Expression propertyExpression = Expression.Property(null, currentProperty); + Expression convertedExpression = Expression.Convert(propertyExpression, typeof (object)); + HttpContextCurrentGetter = (Func<object>) Expression.Lambda(convertedExpression).Compile(); + } + + private static void CreateHttpContextItemsGetter() + { + ParameterExpression contextParam = Expression.Parameter(typeof (object), "context"); + Expression convertedParam = Expression.Convert(contextParam, HttpContextType); + Expression itemsProperty = Expression.Property(convertedParam, "Items"); + HttpContextItemsGetter = (Func<object, IDictionary>) Expression.Lambda(itemsProperty, contextParam).Compile(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Context/WebSessionContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Context/WebSessionContext.cs 2010-08-05 11:06:46 UTC (rev 5112) +++ trunk/nhibernate/src/NHibernate/Context/WebSessionContext.cs 2010-08-05 12:20:09 UTC (rev 5113) @@ -1,32 +1,28 @@ using System; using System.Collections; -using System.Web; - using NHibernate.Engine; namespace NHibernate.Context { /// <summary> /// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> - /// for each <see cref="System.Web.HttpContext"/>. Works only with web applications. + /// for each System.Web.HttpContext. Works only with web applications. /// </summary> [Serializable] public class WebSessionContext : MapBasedSessionContext { private const string SessionFactoryMapKey = "NHibernate.Context.WebSessionContext.SessionFactoryMapKey"; - public WebSessionContext(ISessionFactoryImplementor factory) : base(factory) - { - } + public WebSessionContext(ISessionFactoryImplementor factory) : base(factory) {} protected override IDictionary GetMap() { - return HttpContext.Current.Items[SessionFactoryMapKey] as IDictionary; + return ReflectiveHttpContext.HttpContextCurrentItems[SessionFactoryMapKey] as IDictionary; } protected override void SetMap(IDictionary value) { - HttpContext.Current.Items[SessionFactoryMapKey] = value; + ReflectiveHttpContext.HttpContextCurrentItems[SessionFactoryMapKey] = value; } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-05 11:06:46 UTC (rev 5112) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-05 12:20:09 UTC (rev 5113) @@ -53,7 +53,6 @@ <RequiredTargetFramework>3.0</RequiredTargetFramework> </Reference> <Reference Include="System.Transactions" /> - <Reference Include="System.Web" /> <Reference Include="System.Xml" /> <Reference Include="Antlr3.Runtime, Version=3.1.0.39271, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7"> <SpecificVersion>False</SpecificVersion> @@ -564,6 +563,7 @@ </Compile> <Compile Include="Cfg\XmlHbmBinding\TypeBinder.cs" /> <Compile Include="Cfg\XmlHbmBinding\ValuePropertyBinder.cs" /> + <Compile Include="Context\ReflectiveHttpContext.cs" /> <Compile Include="Context\WcfOperationSessionContext.cs" /> <Compile Include="Criterion\GroupedProjection.cs" /> <Compile Include="Criterion\IPropertyProjection.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-05 11:06:53
|
Revision: 5112 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5112&view=rev Author: fabiomaulo Date: 2010-08-05 11:06:46 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Fix NH-2273 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2010-08-05 03:06:22 UTC (rev 5111) +++ trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2010-08-05 11:06:46 UTC (rev 5112) @@ -16,13 +16,15 @@ private int totalExpectedRowsAffected; private SqlClientSqlCommandSet currentBatch; private StringBuilder currentBatchCommandsLog; + private readonly int defaultTimeout; public SqlClientBatchingBatcher(ConnectionManager connectionManager, IInterceptor interceptor) : base(connectionManager, interceptor) { batchSize = Factory.Settings.AdoBatchSize; - currentBatch = new SqlClientSqlCommandSet(); - SetCommandTimeout(); + defaultTimeout = PropertiesHelper.GetInt32(Cfg.Environment.CommandTimeout, Cfg.Environment.Properties, -1); + + currentBatch = CreateConfiguredBatch(); //we always create this, because we need to deal with a scenario in which //the user change the logging configuration at runtime. Trying to put this //behind an if(log.IsDebugEnabled) will cause a null reference exception @@ -30,26 +32,6 @@ currentBatchCommandsLog = new StringBuilder().AppendLine("Batch commands:"); } - private void SetCommandTimeout() - { - int timeout = PropertiesHelper.GetInt32(Cfg.Environment.CommandTimeout, Cfg.Environment.Properties, -1); - - if (timeout > 0) - { - try - { - currentBatch.CommandTimeout = timeout; - } - catch (Exception e) - { - if (log.IsWarnEnabled) - { - log.Warn(e.ToString()); - } - } - } - } - public override int BatchSize { get { return batchSize; } @@ -107,7 +89,28 @@ currentBatch.Dispose(); totalExpectedRowsAffected = 0; - currentBatch = new SqlClientSqlCommandSet(); + currentBatch = CreateConfiguredBatch(); } + + private SqlClientSqlCommandSet CreateConfiguredBatch() + { + var result = new SqlClientSqlCommandSet(); + if (defaultTimeout > 0) + { + try + { + result.CommandTimeout = defaultTimeout; + } + catch (Exception e) + { + if (log.IsWarnEnabled) + { + log.Warn(e.ToString()); + } + } + } + + return result; + } } } \ 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...> - 2010-08-05 03:06:28
|
Revision: 5111 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5111&view=rev Author: fabiomaulo Date: 2010-08-05 03:06:22 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Fix NH-2158 (thanks to Richard Birkby) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs trunk/nhibernate/src/NHibernate.Test/ExpressionTest/Projection/ProjectionFixture.cs Modified: trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs 2010-08-04 19:54:32 UTC (rev 5110) +++ trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs 2010-08-05 03:06:22 UTC (rev 5111) @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using NHibernate.Dialect.Function; using NHibernate.Engine; @@ -72,7 +73,7 @@ IDictionary<string, IFilter> enabledFilters) { ISQLFunction sqlFunction = GetFunction(criteriaQuery); - List<string> tokens = new List<string>(); + var tokens = new ArrayList(); string replacemenToken = Guid.NewGuid().ToString("n"); for (int i = 0; i < args.Length; i++) { Modified: trunk/nhibernate/src/NHibernate.Test/ExpressionTest/Projection/ProjectionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/ExpressionTest/Projection/ProjectionFixture.cs 2010-08-04 19:54:32 UTC (rev 5110) +++ trunk/nhibernate/src/NHibernate.Test/ExpressionTest/Projection/ProjectionFixture.cs 2010-08-05 03:06:22 UTC (rev 5111) @@ -8,6 +8,7 @@ namespace NHibernate.Test.ExpressionTest.Projection { using Util; + using NHibernate.Dialect.Function; [TestFixture] public class ProjectionFixture : BaseExpressionFixture @@ -88,6 +89,19 @@ } [Test] + public void NvlTest() + { + ISession session = factory.OpenSession(); + IProjection expression = Projections.SqlFunction(new NvlFunction(), + NHibernateUtil.String, Projections.Property("Name"), Projections.Property("Address")); + CreateObjects(typeof (Simple), session); + SqlString sqlString = expression.ToSqlString(criteria, 0, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>()); + string expectedSql = "nvl(sql_alias.Name, sql_alias.address) as y0_"; + CompareSqlStrings(sqlString, expectedSql, 0); + session.Close(); + } + + [Test] public void DistinctTest() { ISession session = factory.OpenSession(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-04 19:54:39
|
Revision: 5110 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5110&view=rev Author: fabiomaulo Date: 2010-08-04 19:54:32 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Apply NH-2120 (by Nikolaos Tountas) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Driver/CsharpSqliteDriver.cs Added: trunk/nhibernate/src/NHibernate/Driver/CsharpSqliteDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/CsharpSqliteDriver.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Driver/CsharpSqliteDriver.cs 2010-08-04 19:54:32 UTC (rev 5110) @@ -0,0 +1,53 @@ +namespace NHibernate.Driver +{ + /// <summary> + /// NHibernate driver for the Community CsharpSqlite data provider. + /// <p> + /// Author: <a href="mailto:nic...@ho..."> Nikolaos Tountas </a> + /// </p> + /// </summary> + /// <remarks> + /// <p> + /// In order to use this Driver you must have the Community.CsharpSqlite.dll and Community.CsharpSqlite.SQLiteClient assemblies referenced. + /// </p> + /// <p> + /// Please check <a href="http://code.google.com/p/csharp-sqlite/"> http://code.google.com/p/csharp-sqlite/ </a> for more information regarding csharp-sqlite. + /// </p> + /// </remarks> + public class CsharpSqliteDriver : ReflectionBasedDriver + { + /// <summary> + /// Initializes a new instance of <see cref="CsharpSqliteDriver"/>. + /// </summary> + /// <exception cref="HibernateException"> + /// Thrown when the <c>Community.CsharpSqlite.dll</c> assembly can not be loaded. + /// </exception> + public CsharpSqliteDriver() + : base( + "Community.CsharpSqlite.SQLiteClient", + "Community.CsharpSqlite.SQLiteClient.SqliteConnection", + "Community.CsharpSqlite.SQLiteClient.SqliteCommand") + { + } + + public override bool UseNamedPrefixInSql + { + get { return true; } + } + + public override bool UseNamedPrefixInParameter + { + get { return true; } + } + + public override string NamedPrefix + { + get { return "@"; } + } + + public override bool SupportsMultipleOpenReaders + { + get { return false; } + } + } +} Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-04 17:40:14 UTC (rev 5109) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-04 19:54:32 UTC (rev 5110) @@ -596,6 +596,7 @@ <Compile Include="Dialect\Schema\SybaseAnywhereMetaData.cs" /> <Compile Include="Dialect\SybaseASA10Dialect.cs" /> <Compile Include="Dialect\SybaseASA9Dialect.cs" /> + <Compile Include="Driver\CsharpSqliteDriver.cs" /> <Compile Include="Driver\IfxDriver.cs" /> <Compile Include="Driver\OracleLiteDataClientDriver.cs" /> <Compile Include="Engine\Query\CallableParser.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-04 17:40:20
|
Revision: 5109 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5109&view=rev Author: fabiomaulo Date: 2010-08-04 17:40:14 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Apply NH-2026 (by Diego Mijelshon) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/InformixDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/InformixDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/InformixDialect.cs 2010-08-04 17:30:13 UTC (rev 5108) +++ trunk/nhibernate/src/NHibernate/Dialect/InformixDialect.cs 2010-08-04 17:40:14 UTC (rev 5109) @@ -1,9 +1,12 @@ using System.Data; using System.Data.Common; +using System.Text; using NHibernate.Cfg; using NHibernate.Dialect.Function; using NHibernate.Exceptions; using NHibernate.SqlCommand; +using NHibernate.Util; + //using NHibernate.Dialect.Schema; namespace NHibernate.Dialect @@ -446,6 +449,29 @@ return -1; } + + public override string GetAddForeignKeyConstraintString(string constraintName, string[] foreignKey, string referencedTable, string[] primaryKey, bool referencesPrimaryKey) + { + // NH-2026 + var res = new StringBuilder(200); + + res.Append(" add constraint foreign key (") + .Append(StringHelper.Join(StringHelper.CommaSpace, foreignKey)) + .Append(") references ") + .Append(referencedTable); + + if (!referencesPrimaryKey) + { + res.Append(" (") + .Append(StringHelper.Join(StringHelper.CommaSpace, primaryKey)) + .Append(')'); + } + + res.Append(" constraint ") + .Append(constraintName); + + return res.ToString(); + } } public class IfxViolatedConstraintExtracter : TemplatedViolatedConstraintNameExtracter This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-04 17:30:19
|
Revision: 5108 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5108&view=rev Author: fabiomaulo Date: 2010-08-04 17:30:13 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Minor (Check NH-2089 with strings substitution) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs 2010-08-04 17:21:44 UTC (rev 5107) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs 2010-08-04 17:30:13 UTC (rev 5108) @@ -10,13 +10,13 @@ protected override void Configure(NHibernate.Cfg.Configuration configuration) { base.Configure(configuration); - configuration.SessionFactory().Integrate.CreateCommands.WithHqlToSqlSubstitutions("pizza 1"); + configuration.SessionFactory().Integrate.CreateCommands.WithHqlToSqlSubstitutions("pizza 1, calda 'bobrock'"); } - const string query = "from SimpleClass s where s.IntValue > pizza"; [Test] public void WhenSubstitutionsConfiguredThenUseItInTranslation() { + const string query = "from SimpleClass s where s.IntValue > pizza"; var sql = GetSql(query, new Dictionary<string, string>{{"pizza","1"}}); sql.Should().Not.Contain("pizza"); } @@ -24,6 +24,7 @@ [Test] public void WhenExecutedThroughSessionThenUseSubstitutions() { + const string query = "from SimpleClass s where s.IntValue > pizza"; using (var s = OpenSession()) { using (SqlLogSpy sqlLogSpy = new SqlLogSpy()) @@ -34,5 +35,28 @@ } } } + + [Test] + public void WhenSubstitutionsWithStringConfiguredThenUseItInTranslation() + { + const string query = "from SimpleClass s where s.Description > calda"; + var sql = GetSql(query, new Dictionary<string, string> { { "calda", "'bobrock'" } }); + sql.Should().Not.Contain("pizza").And.Contain("'bobrock'"); + } + + [Test] + public void WhenExecutedThroughSessionThenUseSubstitutionsWithString() + { + const string query = "from SimpleClass s where s.Description > calda"; + using (var s = OpenSession()) + { + using (SqlLogSpy sqlLogSpy = new SqlLogSpy()) + { + s.CreateQuery(query).List(); + string sql = sqlLogSpy.Appender.GetEvents()[0].RenderedMessage; + sql.Should().Not.Contain("pizza").And.Contain("'bobrock'"); + } + } + } } } \ 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...> - 2010-08-04 17:21:50
|
Revision: 5107 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5107&view=rev Author: fabiomaulo Date: 2010-08-04 17:21:44 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Check NH-2089 not an issue Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2010-08-04 11:57:46 UTC (rev 5106) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2010-08-04 17:21:44 UTC (rev 5107) @@ -39,8 +39,13 @@ public string GetSql(string query) { - var qt = new QueryTranslatorImpl(null, new HqlParseEngine(query, false, sessions).Parse(), emptyfilters, sessions); - qt.Compile(null, false); + return GetSql(query, null); + } + + public string GetSql(string query, IDictionary<string, string> replacements) + { + var qt = new QueryTranslatorImpl(null, new HqlParseEngine(query, false, sessions).Parse(), emptyfilters, sessions); + qt.Compile(replacements, false); return qt.SQLString; } Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/QuerySubstitutionTest.cs 2010-08-04 17:21:44 UTC (rev 5107) @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using NUnit.Framework; +using NHibernate.Cfg.Loquacious; +using SharpTestsEx; + +namespace NHibernate.Test.HQL.Ast +{ + public class QuerySubstitutionTest: BaseFixture + { + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + base.Configure(configuration); + configuration.SessionFactory().Integrate.CreateCommands.WithHqlToSqlSubstitutions("pizza 1"); + } + const string query = "from SimpleClass s where s.IntValue > pizza"; + + [Test] + public void WhenSubstitutionsConfiguredThenUseItInTranslation() + { + var sql = GetSql(query, new Dictionary<string, string>{{"pizza","1"}}); + sql.Should().Not.Contain("pizza"); + } + + [Test] + public void WhenExecutedThroughSessionThenUseSubstitutions() + { + using (var s = OpenSession()) + { + using (SqlLogSpy sqlLogSpy = new SqlLogSpy()) + { + s.CreateQuery(query).List(); + string sql = sqlLogSpy.Appender.GetEvents()[0].RenderedMessage; + sql.Should().Not.Contain("pizza"); + } + } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-04 11:57:46 UTC (rev 5106) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-04 17:21:44 UTC (rev 5107) @@ -373,6 +373,7 @@ <Compile Include="HQL\Ast\Mammal.cs" /> <Compile Include="HQL\Ast\Name.cs" /> <Compile Include="HQL\Ast\ParsingFixture.cs" /> + <Compile Include="HQL\Ast\QuerySubstitutionTest.cs" /> <Compile Include="HQL\Ast\Reptile.cs" /> <Compile Include="HQL\Ast\SimpleAssociatedEntity.cs" /> <Compile Include="HQL\Ast\SimpleClass.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-04 11:57:52
|
Revision: 5106 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5106&view=rev Author: fabiomaulo Date: 2010-08-04 11:57:46 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Fix NH-2267 (by Patrick Earl) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Driver/NpgsqlDriver.cs Modified: trunk/nhibernate/src/NHibernate/Driver/NpgsqlDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/NpgsqlDriver.cs 2010-08-04 11:54:24 UTC (rev 5105) +++ trunk/nhibernate/src/NHibernate/Driver/NpgsqlDriver.cs 2010-08-04 11:57:46 UTC (rev 5106) @@ -58,10 +58,8 @@ protected override bool SupportsPreparingCommands { - // NOTE: Npgsql1.0 and 2.0-preview apparently doesn't correctly support prepared commands. - // The following exception is thrown on insert statements: - // Npgsql.NpgsqlException : ERROR: 42601: cannot insert multiple commands into a prepared statement - get { return false; } + // NH-2267 Patrick Earl + get { return true; } } public override bool SupportsMultipleQueries This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |