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-09-28 21:23:14
|
Revision: 5228
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5228&view=rev
Author: fabiomaulo
Date: 2010-09-28 21:23:08 +0000 (Tue, 28 Sep 2010)
Log Message:
-----------
Fix NH-2352
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs
Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-26 18:06:04 UTC (rev 5227)
+++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-28 21:23:08 UTC (rev 5228)
@@ -1841,7 +1841,11 @@
protected virtual string GetDefaultConfigurationFilePath()
{
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
- string relativeSearchPath = AppDomain.CurrentDomain.RelativeSearchPath.Split(';').First();
+
+ // Note RelativeSearchPath can be null even if the doc say something else; don't remove the check
+ var searchPath = AppDomain.CurrentDomain.RelativeSearchPath ?? string.Empty;
+
+ string relativeSearchPath = searchPath.Split(';').First();
string binPath = Path.Combine(baseDir, relativeSearchPath);
return Path.Combine(binPath, DefaultHibernateCfgFileName);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-26 18:06:10
|
Revision: 5227
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5227&view=rev
Author: fabiomaulo
Date: 2010-09-26 18:06:04 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Changed release of current trunk
Modified Paths:
--------------
trunk/nhibernate/build-common/common.xml
Modified: trunk/nhibernate/build-common/common.xml
===================================================================
--- trunk/nhibernate/build-common/common.xml 2010-09-26 17:52:48 UTC (rev 5226)
+++ trunk/nhibernate/build-common/common.xml 2010-09-26 18:06:04 UTC (rev 5227)
@@ -84,7 +84,7 @@
effectively SP0).
-->
- <property name="project.version" value="3.0.0.Alpha3" overwrite="false" />
+ <property name="project.version" value="3.0.0.Beta1" overwrite="false" />
<!-- Compute short project version (major.minor) using a regex -->
<regex input="${project.version}" pattern="^(?'shortversion'\d+\.\d+)" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-26 17:52:57
|
Revision: 5226
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5226&view=rev
Author: fabiomaulo
Date: 2010-09-26 17:52:48 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Preparing release 3.0.0Alpha3
Modified Paths:
--------------
trunk/nhibernate/releasenotes.txt
Modified: trunk/nhibernate/releasenotes.txt
===================================================================
--- trunk/nhibernate/releasenotes.txt 2010-09-26 17:49:15 UTC (rev 5225)
+++ trunk/nhibernate/releasenotes.txt 2010-09-26 17:52:48 UTC (rev 5226)
@@ -1,6 +1,6 @@
Build 3.0.0.Alpha3
=============================
-** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha3
+** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0
##### Run time #####
* [NH-2199] - null values in maps/dictionaries are no longer silenty ignored/deleted
* [NH-1894] - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect.
@@ -8,7 +8,66 @@
##### Possible Breaking Changes #####
* [NH-2251] - Signature change for GetLimitString in Dialect
+ * [NH-2284] - Obsolete members removed
+Build 3.0.0.Alpha3 (rev5226)
+=============================
+
+** Bug
+ * [NH-1927] - Criteria generates wrong sql when eager fetching one-to-many with filter
+ * [NH-1928] - SQL line comments swallow next line
+ * [NH-2024] - Max results parameter could not provided to subquery
+ * [NH-2061] - Merge operation causes null exception for null components that contain many-to-many relations
+ * [NH-2096] - IndexOutOfRangeException reading zero-length binary value from MySQL
+ * [NH-2112] - Update executed on the DB during a Session.Merge of an unmodified entity
+ * [NH-2138] - Entity name support in custom SQL is broken: sql-query/return/@entity-name attribute is ignored
+ * [NH-2147] - default_batch_fetch_size has no effect
+ * [NH-2188] - Exception occurs when configuration searches default config file and multiple search path were defined for current AppDomain.
+ * [NH-2202] - Unable to use ICriteria with projection property that references a composite key relationship
+ * [NH-2258] - Paging params in subquery breaks query execution.
+ * [NH-2265] - Any linq query using oracle fails when restricting the number of results returned
+ * [NH-2270] - NHibernatethrows MappingException on Linux/Mono 2.7
+ * [NH-2279] - PersistentIdentifierBag fails to maintain ID map in many cases
+ * [NH-2288] - The drop scripts from SchemaExport in SQL2005 dialect will not work for constraints when using DefaultSchema setting other than dbo
+ * [NH-2289] - Linq query fail when using contains from ICollection<T> or IList<T>
+ * [NH-2302] - MsSql Dialect, mapping an nvarchar(max) using string(10000) causes string truncation
+ * [NH-2303] - Regression bug: hibernate-mapping/subclass element can no longer extend hibernate-mapping/class//subclass element
+ * [NH-2322] - Performing updates in OnPostUpdate event causes enumeration error
+ * [NH-2339] - After rev 5139 (apply NH-2335) NHibernate does not work under Medium Trust
+ * [NH-2343] - NHibernate.Type.GenericBagType<T>.Wrap() incorrectly assumes collection implements IList<T>
+ * [NH-2344] - Coalesce expression does not work on linq provider
+
+** Improvement
+ * [NH-626] - Adding XmlDoc to NH types
+ * [NH-1618] - Lazy loading for one-to-one association
+ * [NH-1894] - New SQL Anywhere NHibernate dialect
+ * [NH-2135] - Compatible with Mono
+ * [NH-2292] - Set Initialize in AbstractLazyInitializer as virtual
+ * [NH-2301] - Castle Bytecode with last released 2.5
+ * [NH-2321] - Recommended method for xml intellisense
+ * [NH-2340] - Workaround, for some DataProviders, in AbstractCharType for char?
+
+** New Feature
+ * [NH-866] - SQL Server 2005 XML Support
+ * [NH-2348] - Support polymorphism with Get and Load
+
+** Patch
+ * [NH-2006] - Additional test to use-many-to-one
+ * [NH-2111] - PersistentIdentifierBag has null reference exception when accessing SyncRoot on lazy loaded collection
+ * [NH-2278] - PersistentGenericIdentifierBag instantiates wrong list type
+ * [NH-2284] - Obsolete members can be removed
+ * [NH-2293] - When query has only a "from" throw QuerySyntaxException instead of InvalidCastException
+ * [NH-2307] - Fix ByteCode Framework Targets
+ * [NH-2332] - Update SybaseAnywhereMetaData.cs to support fetching the reserved words
+ * [NH-2335] - ReflectiveHttpContext support for different .NET versions
+ * [NH-2336] - Leading and trailing ansi trim emulation functions are reversed
+ * [NH-2346] - Dialect.TableTypeString is not used when creating schema.
+
+** Task
+ * [NH-2161] - Breaking change in naming strategy from 2.0 to 2.1
+ * [NH-2315] - Spring version does not match antlr version
+ * [NH-2338] - Upgrade to Castle.Core 2.5.1
+
Build 3.0.0.Alpha2 (rev5159)
=============================
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-26 17:49:26
|
Revision: 5225
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5225&view=rev
Author: fabiomaulo
Date: 2010-09-26 17:49:15 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Renamed internal logger interface to make happy Castle's logging facility
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/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/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/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/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/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.ByteCode.Castle/ProxyFactory.cs
trunk/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactory.cs
Modified: trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -21,7 +21,7 @@
/// </summary>
public abstract class AbstractBatcher : IBatcher
{
- protected static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractBatcher));
+ protected static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/AdoNet/ConnectionManager.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -17,7 +17,7 @@
[Serializable]
public class ConnectionManager : ISerializable, IDeserializationCallback
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionManager));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -8,7 +8,7 @@
/// <summary> Centralize logging handling for SQL statements. </summary>
public class SqlStatementLogger
{
- private static readonly ILogger log = LoggerProvider.LoggerFor("NHibernate.SQL");
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor("NHibernate.SQL");
/// <summary> Constructs a new SqlStatementLogger instance.</summary>
public SqlStatementLogger() : this(false, false) { }
Modified: trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -13,7 +13,7 @@
/// </summary>
public class BytecodeProviderImpl : AbstractBytecodeProvider
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (BytecodeProviderImpl));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof (BytecodeProviderImpl));
#region IBytecodeProvider Members
Modified: trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/CacheFactory.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -9,7 +9,7 @@
/// </summary>
public static class CacheFactory
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CacheFactory));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/NoCacheProvider.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -9,7 +9,7 @@
/// </summary>
public class NoCacheProvider : ICacheProvider
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NoCacheProvider));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -16,7 +16,7 @@
{
private ICache cache;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NonstrictReadWriteCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -10,7 +10,7 @@
public class ReadOnlyCache : ICacheConcurrencyStrategy
{
private ICache cache;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ReadOnlyCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -30,7 +30,7 @@
bool IsPuttable(long txTimestamp, object newVersion, IComparer comparator);
}
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ReadWriteCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/StandardQueryCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -18,7 +18,7 @@
/// </summary>
public class StandardQueryCache : IQueryCache
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (StandardQueryCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cache/UpdateTimestampsCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -16,7 +16,7 @@
/// </summary>
public class UpdateTimestampsCache
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UpdateTimestampsCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -76,7 +76,7 @@
protected IDictionary<string, Mappings.TableDescription> tableNameBinding;
protected IDictionary<Table, Mappings.ColumnNames> columnNameBindingPerTable;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Configuration));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/ConfigurationSchema/HibernateConfiguration.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -23,7 +23,7 @@
/// </summary>
public class HibernateConfiguration : IHibernateConfiguration
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(HibernateConfiguration));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(HibernateConfiguration));
/// <summary>
/// Initializes a new instance of the <see cref="HibernateConfiguration"/> class.
Modified: trunk/nhibernate/src/NHibernate/Cfg/Environment.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/Environment.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -167,7 +167,7 @@
private static IBytecodeProvider BytecodeProviderInstance;
private static bool EnableReflectionOptimizer;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (Environment));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/Mappings.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -47,7 +47,7 @@
#endregion
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Mappings));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/SettingsFactory.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -22,7 +22,7 @@
[Serializable]
public sealed class SettingsFactory
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(SettingsFactory));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -10,7 +10,7 @@
{
public abstract class Binder
{
- protected static readonly ILogger log = LoggerProvider.LoggerFor(typeof (Binder));
+ protected static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -8,7 +8,7 @@
{
public class FilterDefinitionFactory
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (FilterDefinitionFactory));
+ private static readonly IInternalLogger log = LoggerProvider.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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingLogExtensions.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -5,7 +5,7 @@
{
public static class MappingLogExtensions
{
- public static void LogMapped(this Mapping.Property property, ILogger log)
+ public static void LogMapped(this Mapping.Property property, IInternalLogger log)
{
if (log.IsDebugEnabled)
{
Modified: trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Collection/PersistentArrayHolder.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -20,7 +20,7 @@
[DebuggerTypeProxy(typeof (CollectionProxy))]
public class PersistentArrayHolder : AbstractPersistentCollection, ICollection
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (PersistentArrayHolder));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof (PersistentArrayHolder));
private Array array;
Modified: trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProvider.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -15,7 +15,7 @@
/// </summary>
public abstract class ConnectionProvider : IConnectionProvider
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionProvider));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Connection/ConnectionProviderFactory.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -11,7 +11,7 @@
/// </summary>
public sealed class ConnectionProviderFactory
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ConnectionProviderFactory));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Connection/DriverConnectionProvider.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -9,7 +9,7 @@
/// </summary>
public class DriverConnectionProvider : ConnectionProvider
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DriverConnectionProvider));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Connection/UserSuppliedConnectionProvider.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -14,7 +14,7 @@
/// </remarks>
public class UserSuppliedConnectionProvider : ConnectionProvider
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UserSuppliedConnectionProvider));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Context/ThreadLocalSessionContext.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -30,7 +30,7 @@
[Serializable]
public class ThreadLocalSessionContext : ICurrentSessionContext
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ThreadLocalSessionContext));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -31,7 +31,7 @@
/// </remarks>
public abstract class Dialect
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Dialect));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Dialect/Lock/UpdateLockingStrategy.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -15,7 +15,7 @@
/// <remarks> This strategy is not valid for read style locks. </remarks>
public class UpdateLockingStrategy : ILockingStrategy
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(UpdateLockingStrategy));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Dialect/Schema/AbstractTableMetadata.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -7,7 +7,7 @@
{
public abstract class AbstractTableMetadata : ITableMetadata
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ITableMetadata));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Driver/DriverBase.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -14,7 +14,7 @@
/// </summary>
public abstract class DriverBase : IDriver, ISqlParameterFormatter
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DriverBase));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -22,7 +22,7 @@
/// </remarks>
public class NHybridDataReader : IDataReader
{
- private ILogger log = LoggerProvider.LoggerFor(typeof(NHybridDataReader));
+ private IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/ActionQueue.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -21,7 +21,7 @@
[Serializable]
public class ActionQueue
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ActionQueue));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Cascade.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -70,7 +70,7 @@
/// </summary>
public sealed class Cascade
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Cascade));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -14,7 +14,7 @@
/// </summary>
public abstract class CascadingAction
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CascadingAction));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/CollectionEntry.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -14,7 +14,7 @@
[Serializable]
public class CollectionEntry
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (CollectionEntry));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Collections.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -8,7 +8,7 @@
{
public static class Collections
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Collections));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -9,7 +9,7 @@
/// <summary> Algorithms related to foreign key constraint transparency </summary>
public static class ForeignKeys
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(ForeignKeys));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(ForeignKeys));
public class Nullifier
{
Modified: trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/IdentifierValue.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -9,7 +9,7 @@
/// </summary>
public class IdentifierValue
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(IdentifierValue));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Loading/CollectionLoadContext.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -22,7 +22,7 @@
/// </remarks>
public class CollectionLoadContext
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(CollectionLoadContext));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Loading/LoadContexts.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -26,7 +26,7 @@
/// </remarks>
public class LoadContexts
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(LoadContexts));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Query/HQLQueryPlan.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -31,7 +31,7 @@
[Serializable]
public class HQLQueryPlan : IQueryPlan
{
- protected static readonly ILogger Log = LoggerProvider.LoggerFor(typeof(HQLQueryPlan));
+ protected static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Query/NativeSQLQueryPlan.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -19,7 +19,7 @@
[Serializable]
public class NativeSQLQueryPlan
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(NativeSQLQueryPlan));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Query/QueryPlanCache.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -11,7 +11,7 @@
[Serializable]
public class QueryPlanCache
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(QueryPlanCache));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -22,7 +22,7 @@
{
public delegate int[] GetNamedParameterLocations(string parameterName);
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (QueryParameters));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -32,8 +32,8 @@
public class StatefulPersistenceContext : IPersistenceContext, ISerializable, IDeserializationCallback
{
private const int InitCollectionSize = 8;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(StatefulPersistenceContext));
- private static readonly ILogger ProxyWarnLog = LoggerProvider.LoggerFor(typeof(StatefulPersistenceContext).FullName + ".ProxyWarnLog");
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(StatefulPersistenceContext));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Transaction/Isolater.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -28,7 +28,7 @@
/// </remarks>
public class Isolater
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Isolater));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -18,7 +18,7 @@
/// </summary>
public static class TwoPhaseLoad
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(TwoPhaseLoad));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/VersionValue.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -11,7 +11,7 @@
/// </summary>
public class VersionValue
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(VersionValue));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Engine/Versioning.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -17,7 +17,7 @@
All = 2
}
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(Versioning));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -18,7 +18,7 @@
[Serializable]
public abstract class AbstractFlushingEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof (AbstractFlushingEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractLockUpgradeEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -16,7 +16,7 @@
[Serializable]
public class AbstractLockUpgradeEventListener : AbstractReassociateEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractLockUpgradeEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -15,7 +15,7 @@
[Serializable]
public class AbstractReassociateEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractReassociateEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -28,7 +28,7 @@
[Serializable]
public abstract class AbstractSaveEventListener : AbstractReassociateEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractSaveEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -11,7 +11,7 @@
[Serializable]
public class DefaultAutoFlushEventListener : AbstractFlushingEventListener, IAutoFlushEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultAutoFlushEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -19,7 +19,7 @@
[Serializable]
public class DefaultDeleteEventListener : IDeleteEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultDeleteEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDirtyCheckEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -10,7 +10,7 @@
[Serializable]
public class DefaultDirtyCheckEventListener : AbstractFlushingEventListener, IDirtyCheckEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultDirtyCheckEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -16,7 +16,7 @@
[Serializable]
public class DefaultEvictEventListener : IEvictEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultEvictEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -16,7 +16,7 @@
[Serializable]
public class DefaultFlushEntityEventListener : IFlushEntityEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultFlushEntityEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultInitializeCollectionEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -13,7 +13,7 @@
[Serializable]
public class DefaultInitializeCollectionEventListener : IInitializeCollectionEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultInitializeCollectionEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -19,7 +19,7 @@
[Serializable]
public class DefaultLoadEventListener : AbstractLockUpgradeEventListener, ILoadEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultLoadEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -18,7 +18,7 @@
[Serializable]
public class DefaultMergeEventListener : AbstractSaveEventListener, IMergeEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultMergeEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -15,7 +15,7 @@
[Serializable]
public class DefaultPersistEventListener : AbstractSaveEventListener, IPersistEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultPersistEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -17,7 +17,7 @@
[Serializable]
public class DefaultRefreshEventListener : IRefreshEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultRefreshEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -13,7 +13,7 @@
[Serializable]
public class DefaultReplicateEventListener : AbstractSaveEventListener, IReplicateEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultReplicateEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -14,7 +14,7 @@
[Serializable]
public class DefaultSaveOrUpdateEventListener : AbstractSaveEventListener, ISaveOrUpdateEventListener
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(DefaultSaveOrUpdateEventListener));
+ private static readonly IInternalLogger 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-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/EvictVisitor.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -13,7 +13,7 @@
/// </summary>
public class EvictVisitor : AbstractVisitor
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(EvictVisitor));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(EvictVisitor));
public EvictVisitor(IEventSource session) : base(session) { }
Modified: trunk/nhibernate/src/NHibernate/Event/Default/ReattachVisitor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Event/Default/ReattachVisitor.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/ReattachVisitor.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -13,7 +13,7 @@
{
private readonly object ownerIdentifier;
private readonly object owner;
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(AbstractFlushingEventListener));
+ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(AbstractFlushingEventListener));
protected ReattachVisitor(IEventSource session, object ownerIdentifier, object owner)
: base(session)
Modified: trunk/nhibernate/src/NHibernate/Event/Default/WrapVisitor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Event/Default/WrapVisitor.cs 2010-09-26 16:54:16 UTC (rev 5224)
+++ trunk/nhibernate/src/NHibernate/Event/Default/WrapVisitor.cs 2010-09-26 17:49:15 UTC (rev 5225)
@@ -12,7 +12,7 @@
/// </summary>
public class WrapVisitor : ProxyVisitor
{
- private static readonly ILogger log = LoggerProvider.LoggerFor(typeof(WrapVisitor));
+ priv...
[truncated message content] |
|
From: <fab...@us...> - 2010-09-26 16:54:22
|
Revision: 5224
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5224&view=rev
Author: fabiomaulo
Date: 2010-09-26 16:54:16 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Fix NH-2348 (thanks to Patrick Earl for the idea)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/
trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Domain.cs
trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/PolymorphicGetAndLoadTest.cs
Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2010-09-26 14:26:22 UTC (rev 5223)
+++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2010-09-26 16:54:16 UTC (rev 5224)
@@ -1,6 +1,6 @@
using System;
using System.Diagnostics;
-
+using System.Text;
using NHibernate.Cache;
using NHibernate.Cache.Access;
using NHibernate.Cache.Entry;
@@ -36,7 +36,7 @@
}
else
{
- persister = source.Factory.GetEntityPersister(@event.EntityClassName);
+ persister = GetEntityPersister(source.Factory, @event.EntityClassName);
}
if (persister == null)
@@ -384,7 +384,7 @@
}
if (options.IsAllowNulls)
{
- IEntityPersister persister = @event.Session.Factory.GetEntityPersister(@event.EntityClassName);
+ IEntityPersister persister = GetEntityPersister(@event.Session.Factory, @event.EntityClassName);
if (!persister.IsInstance(old, @event.Session.EntityMode))
{
return InconsistentRTNClassMarker;
@@ -493,5 +493,32 @@
}
return result;
}
+
+ protected virtual IEntityPersister GetEntityPersister(ISessionFactoryImplementor factory, string entityName)
+ {
+ // Check for an exact match.
+ IEntityPersister persister = factory.TryGetEntityPersister(entityName);
+ if (persister != null)
+ {
+ return persister;
+ }
+
+ // Couldn't find persister through exact name, try finding a single implementing class.
+ string[] implementors = factory.GetImplementors(entityName);
+ if (implementors.Length > 1)
+ {
+ var messageBuilder = new StringBuilder(512);
+ messageBuilder.AppendLine(string.Format("Ambiguous persister for {0} implemented by more than one hierarchy: ",
+ entityName));
+ Array.ForEach(implementors, s=> messageBuilder.AppendLine(s));
+
+ throw new HibernateException(messageBuilder.ToString());
+ }
+ if (implementors.Length == 0)
+ {
+ return null;
+ }
+ return factory.GetEntityPersister(implementors[0]);
+ }
}
}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 14:26:22 UTC (rev 5223)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 16:54:16 UTC (rev 5224)
@@ -517,6 +517,8 @@
<Compile Include="NHSpecificTest\NH2331\Person.cs" />
<Compile Include="NHSpecificTest\NH2344\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2344\Model.cs" />
+ <Compile Include="PolymorphicGetAndLoad\Domain.cs" />
+ <Compile Include="PolymorphicGetAndLoad\PolymorphicGetAndLoadTest.cs" />
<Compile Include="TypesTest\CharClass.cs" />
<Compile Include="TypesTest\CharClassFixture.cs" />
<Compile Include="TypesTest\DateTimeClass.cs" />
@@ -2312,6 +2314,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="PolymorphicGetAndLoad\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2331\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2324\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2344\Mappings.hbm.xml" />
@@ -2655,7 +2658,6 @@
<EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" />
</ItemGroup>
<ItemGroup>
- <Folder Include="NHSpecificTest\NH2202" />
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Added: trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Domain.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Domain.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Domain.cs 2010-09-26 16:54:16 UTC (rev 5224)
@@ -0,0 +1,41 @@
+namespace NHibernate.Test.PolymorphicGetAndLoad
+{
+ public class A: INamed
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+
+ public interface IOccuped
+ {
+ string Occupation { get; set; }
+ }
+
+ public class B: A, IOccuped
+ {
+ public virtual string Occupation { get; set; }
+ }
+
+ public interface INamed
+ {
+ string Name { get; set; }
+ }
+
+ public class GraphA : IMultiGraphNamed
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+
+ public class GraphB : IMultiGraphNamed
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+
+ public interface IMultiGraphNamed
+ {
+ string Name { get; set; }
+ }
+
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/Mappings.hbm.xml 2010-09-26 16:54:16 UTC (rev 5224)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping
+ xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.PolymorphicGetAndLoad">
+
+ <class name="A">
+ <id name="Id">
+ <generator class="hilo" />
+ </id>
+ <property name="Name"/>
+ <joined-subclass name="B">
+ <key column="AId"/>
+ <property name="Occupation"/>
+ </joined-subclass>
+ </class>
+
+ <class name="GraphA">
+ <id name="Id">
+ <generator class="hilo" />
+ </id>
+ <property name="Name"/>
+ </class>
+
+ <class name="GraphB">
+ <id name="Id">
+ <generator class="hilo" />
+ </id>
+ <property name="Name"/>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/PolymorphicGetAndLoadTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/PolymorphicGetAndLoadTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/PolymorphicGetAndLoad/PolymorphicGetAndLoadTest.cs 2010-09-26 16:54:16 UTC (rev 5224)
@@ -0,0 +1,260 @@
+using System;
+using System.Collections;
+using NHibernate.Engine;
+using NHibernate.Proxy;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.PolymorphicGetAndLoad
+{
+ public class PolymorphicGetAndLoadTest: TestCase
+ {
+ protected override string MappingsAssembly
+ {
+ get { return "NHibernate.Test"; }
+ }
+
+ protected override IList Mappings
+ {
+ get { return new[] { "PolymorphicGetAndLoad.Mappings.hbm.xml" }; }
+ }
+
+ public class ScenarioWithA : IDisposable
+ {
+ private readonly ISessionFactory factory;
+ private readonly A a;
+
+ public ScenarioWithA(ISessionFactory factory)
+ {
+ this.factory = factory;
+ a = new A { Name = "Patrick" };
+ using (var s = factory.OpenSession())
+ {
+ s.Save(a);
+ s.Flush();
+ }
+ }
+
+ public A A
+ {
+ get { return a; }
+ }
+
+ public void Dispose()
+ {
+ using (var s = factory.OpenSession())
+ {
+ s.Delete(a);
+ s.Flush();
+ }
+ }
+ }
+
+ public class ScenarioWithB : IDisposable
+ {
+ private readonly ISessionFactory factory;
+ private readonly B b;
+
+ public ScenarioWithB(ISessionFactory factory)
+ {
+ this.factory = factory;
+ b = new B { Name = "Patrick", Occupation = "hincha pelotas (en el buen sentido), but good candidate to be committer."};
+ using (var s = factory.OpenSession())
+ {
+ s.Save(b);
+ s.Flush();
+ }
+ }
+
+ public B B
+ {
+ get { return b; }
+ }
+
+ public void Dispose()
+ {
+ using (var s = factory.OpenSession())
+ {
+ s.Delete(b);
+ s.Flush();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenSaveDeleteBaseClassCastedToInterfaceThenNotThrows()
+ {
+ INamed a = new A { Name = "Patrick" };
+ Executing.This(() =>
+ {
+ using (var s = OpenSession())
+ {
+ s.Save(a);
+ s.Flush();
+ }
+ }).Should().NotThrow();
+
+ Executing.This(() =>
+ {
+ using (var s = OpenSession())
+ {
+ s.Delete(a);
+ s.Flush();
+ }
+ }).Should().NotThrow();
+
+ }
+
+ [Test]
+ public void WhenLoadBaseClassUsingInterfaceThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithA(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ s.Executing(session => session.Load<INamed>(scenario.A.Id)).NotThrows();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenGetBaseClassUsingInterfaceThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithA(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ s.Executing(session => session.Get<INamed>(scenario.A.Id)).NotThrows();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenLoadInheritedClassUsingInterfaceThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithB(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ Executing.This(()=> s.Load<INamed>(scenario.B.Id) ).Should().NotThrow();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenLoadInheritedClassUsingInterfaceThenShouldAllowNarrowingProxy()
+ {
+ using (var scenario = new ScenarioWithB(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ INamed loadedEntity = null;
+ Executing.This(() => loadedEntity = s.Load<INamed>(scenario.B.Id)).Should().NotThrow();
+ NHibernateProxyHelper.GetClassWithoutInitializingProxy(loadedEntity).Should().Be(typeof(A));
+
+ var narrowedProxy = s.Load<B>(scenario.B.Id);
+
+ NHibernateProxyHelper.GetClassWithoutInitializingProxy(narrowedProxy).Should().Be(typeof(B));
+
+ var firstLoadedImpl = ((INHibernateProxy)loadedEntity).HibernateLazyInitializer.GetImplementation((ISessionImplementor)s);
+ var secondLoadedImpl = ((INHibernateProxy)narrowedProxy).HibernateLazyInitializer.GetImplementation((ISessionImplementor)s);
+ firstLoadedImpl.Should().Be.SameInstanceAs(secondLoadedImpl);
+ }
+ }
+ }
+
+ [Test]
+ public void WhenLoadInterfaceThenShouldAllowNarrowingProxy()
+ {
+ using (var scenario = new ScenarioWithB(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ INamed loadedEntity = null;
+ Executing.This(() => loadedEntity = s.Load<INamed>(scenario.B.Id)).Should().NotThrow();
+ NHibernateProxyHelper.GetClassWithoutInitializingProxy(loadedEntity).Should().Be(typeof(A));
+
+ var narrowedProxy = s.Load<IOccuped>(scenario.B.Id);
+
+ NHibernateProxyHelper.GetClassWithoutInitializingProxy(narrowedProxy).Should().Be(typeof(B));
+
+ var firstLoadedImpl = ((INHibernateProxy)loadedEntity).HibernateLazyInitializer.GetImplementation((ISessionImplementor)s);
+ var secondLoadedImpl = ((INHibernateProxy)narrowedProxy).HibernateLazyInitializer.GetImplementation((ISessionImplementor)s);
+ firstLoadedImpl.Should().Be.SameInstanceAs(secondLoadedImpl);
+ }
+ }
+ }
+
+ [Test]
+ public void WhenGetInheritedClassUsingInterfaceThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithB(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ INamed loadedEntity = null;
+ Executing.This(() => loadedEntity = s.Get<INamed>(scenario.B.Id)).Should().NotThrow();
+ loadedEntity.Should().Be.OfType<B>();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenLoadClassUsingInterfaceOfMultippleHierarchyThenThrows()
+ {
+ using (var s = OpenSession())
+ {
+ Executing.This(() => s.Load<IMultiGraphNamed>(1))
+ .Should().Throw<HibernateException>()
+ .And.ValueOf.Message.Should()
+ .Contain("Ambiguous")
+ .And.Contain("GraphA")
+ .And.Contain("GraphB")
+ .And.Contain("IMultiGraphNamed");
+ }
+ }
+
+ [Test]
+ public void WhenGetClassUsingInterfaceOfMultippleHierarchyThenThrows()
+ {
+ using (var s = OpenSession())
+ {
+ Executing.This(() => s.Get<IMultiGraphNamed>(1))
+ .Should().Throw<HibernateException>()
+ .And.ValueOf.Message.Should()
+ .Contain("Ambiguous")
+ .And.Contain("GraphA")
+ .And.Contain("GraphB")
+ .And.Contain("IMultiGraphNamed");
+ }
+ }
+
+ [Test]
+ public void WhenGetBaseClassUsingInterfaceFromSessionCacheThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithA(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ var id = scenario.A.Id;
+ s.Get<A>(id);
+ s.Executing(session => session.Get<INamed>(id)).NotThrows();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenGetInheritedClassUsingInterfaceFromSessionCacheThenNotThrows()
+ {
+ using (var scenario = new ScenarioWithB(Sfi))
+ {
+ using (var s = OpenSession())
+ {
+ var id = scenario.B.Id;
+ s.Get<B>(id);
+ s.Executing(session => session.Get<INamed>(id)).NotThrows();
+ }
+ }
+ }
+ }
+}
\ 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-09-26 14:26:30
|
Revision: 5223
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5223&view=rev
Author: fabiomaulo
Date: 2010-09-26 14:26:22 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Test for NH-2331
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,11 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Forum
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ public virtual double Dollars { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH2331" default-access="property"
+ default-lazy="false">
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.Forum">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="string" />
+ <property name="Dollars" type="double" />
+
+ </class>
+
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.MemberGroup">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="System.String" />
+
+ <bag
+ name="Members"
+ table="Group2Members"
+ >
+ <key>
+ <column name="GroupId" />
+ </key>
+ <many-to-many
+ class="NHibernate.Test.NHSpecificTest.NH2331.Person">
+ <column name="PersonId" />
+ </many-to-many>
+ </bag>
+
+ <bag
+ name="Forums"
+ table="Group2Forums"
+ >
+ <key>
+ <column name="GroupId" />
+ </key>
+ <many-to-many
+ class="NHibernate.Test.NHSpecificTest.NH2331.Forum">
+ <column name="ForumId" />
+ </many-to-many>
+ </bag>
+
+ </class>
+
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.Person">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="System.String" />
+
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class MemberGroup
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ public virtual IList<Person> Members { get; set; }
+ public virtual IList<Forum> Forums { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,152 @@
+using System;
+using System.Collections.Generic;
+using NHibernate.Criterion;
+using NHibernate.Transform;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Bar
+ {
+ public string Name { get; set; }
+ public double Sum { get; set; }
+ }
+
+ [TestFixture, Ignore("Not fixed yet.")]
+ public class Nh2331Test : BugTestCase
+ {
+ private Guid person0Id;
+ private Guid person1Id;
+
+ protected override void OnSetUp()
+ {
+ base.OnSetUp();
+
+ var person0 = new Person
+ {
+ Name = "Schorsch",
+ };
+
+ var person1 = new Person
+ {
+ Name = "Sepp",
+ };
+
+ var person2 = new Person
+ {
+ Name = "Detlef",
+ };
+
+ var forum0 = new Forum
+ {
+ Name = "Oof",
+ Dollars = 1887.00,
+ };
+
+ var forum1 = new Forum
+ {
+ Name = "Rab",
+ Dollars = 33.00,
+ };
+
+ var forum2 = new Forum
+ {
+ Name = "Main",
+ Dollars = 42.42,
+ };
+
+ var group0 = new MemberGroup
+ {
+ Name = "Gruppe Bla",
+ Members = new List<Person>(),
+ Forums = new List<Forum>(),
+ };
+ group0.Members.Add(person0);
+ group0.Forums.Add(forum0);
+ group0.Forums.Add(forum1);
+
+ var group1 = new MemberGroup
+ {
+ Name = "Gruppe Blub",
+ Members = new List<Person>(),
+ Forums = new List<Forum>(),
+ };
+ group1.Members.Add(person1);
+ group1.Members.Add(person2);
+ group1.Forums.Add(forum2);
+
+ using (ISession session = OpenSession())
+ {
+ person0Id = (Guid) session.Save(person0);
+ person1Id = (Guid) session.Save(person1);
+
+ session.Flush();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ base.OnTearDown();
+ using (ISession session = OpenSession())
+ {
+ string hql = "from System.Object";
+ session.Delete(hql);
+ session.Flush();
+ }
+ }
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return (true);
+ }
+
+ [Test]
+ public void DetachedCriteriaCorrelatedQueryExplodes()
+ {
+ using (ISession session = OpenSession())
+ {
+ DetachedCriteria memberGroupCriteria
+ = DetachedCriteria
+ .For<MemberGroup>()
+ .CreateAlias("Members", "m")
+ .CreateAlias("Forums", "f")
+ .Add(Restrictions.EqProperty("m.Id", "p.Id"))
+ .SetProjection(Projections.Property("f.Id"))
+ ;
+
+ var ids = new List<Guid>();
+ ids.Add(person0Id);
+ ids.Add(person1Id);
+
+ DetachedCriteria forumCriteria
+ = DetachedCriteria
+ .For<Forum>("fff")
+ .Add(Restrictions.NotEqProperty("Id", "p.Id"))
+ .Add(Subqueries.PropertyIn("Id", memberGroupCriteria))
+ .SetProjection
+ (
+ Projections.Sum("Dollars")
+ )
+ ;
+
+ DetachedCriteria personCriteria
+ = DetachedCriteria
+ .For<Person>("p")
+ .Add(Restrictions.InG("Id", ids))
+ .SetProjection
+ (
+ Projections
+ .ProjectionList()
+ .Add(Projections.Property("Name"), "Name")
+ .Add(Projections.SubQuery(forumCriteria), "Sum")
+ )
+ .SetResultTransformer(Transformers.AliasToBean(typeof (Bar)))
+ ;
+
+ ICriteria criteria = personCriteria.GetExecutableCriteria(session);
+ criteria.Executing(c => c.List()).NotThrows();
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,10 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Person
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 03:53:27 UTC (rev 5222)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 14:26:22 UTC (rev 5223)
@@ -511,6 +511,10 @@
<Compile Include="NHSpecificTest\NH2324\CompositeUserType.cs" />
<Compile Include="NHSpecificTest\NH2324\Entity.cs" />
<Compile Include="NHSpecificTest\NH2324\BulkUpdateWithCustomCompositeType.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Forum.cs" />
+ <Compile Include="NHSpecificTest\NH2331\MemberGroup.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Nh2331Test.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Person.cs" />
<Compile Include="NHSpecificTest\NH2344\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2344\Model.cs" />
<Compile Include="TypesTest\CharClass.cs" />
@@ -2308,6 +2312,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2331\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2324\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2344\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2112\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jul...@us...> - 2010-09-26 03:53:34
|
Revision: 5222
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5222&view=rev
Author: julian-maughan
Date: 2010-09-26 03:53:27 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Fixed "QueryException thrown when grouping by component". Port of HHH-5082 (r19183).
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs
trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs
trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-09-26 03:00:13 UTC (rev 5221)
+++ trunk/nhibernate/src/NHibernate/Criterion/ICriteriaQuery.cs 2010-09-26 03:53:27 UTC (rev 5222)
@@ -13,8 +13,11 @@
{
ISessionFactoryImplementor Factory { get; }
- /// <summary> Get the names of the columns mapped by a property path, ignoring projection aliases </summary>
+ /// <summary> Get the name of the column mapped by a property path, ignoring projection alias</summary>
string GetColumn(ICriteria criteria, string propertyPath);
+
+ /// <summary> Get the names of the columns mapped by a property path, ignoring projection aliases</summary>
+ string[] GetColumns(ICriteria criteria, string propertyPath);
/// <summary> Get the type of a property path, ignoring projection aliases</summary>
IType GetType(ICriteria criteria, string propertyPath);
@@ -75,4 +78,4 @@
/// </summary>
int? CreatePagingParameter(int value);
}
-}
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs 2010-09-26 03:00:13 UTC (rev 5221)
+++ trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs 2010-09-26 03:53:27 UTC (rev 5222)
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using NHibernate.SqlCommand;
using NHibernate.Type;
+using NHibernate.Util;
namespace NHibernate.Criterion
{
@@ -72,7 +73,7 @@
{
throw new InvalidOperationException("not a grouping projection");
}
- return new SqlString(criteriaQuery.GetColumn(criteria, propertyName));
+ return new SqlString(StringHelper.Join(",", criteriaQuery.GetColumns(criteria, propertyName)));
}
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-09-26 03:00:13 UTC (rev 5221)
+++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-09-26 03:53:27 UTC (rev 5222)
@@ -530,7 +530,7 @@
public string GetColumn(ICriteria criteria, string propertyName)
{
- string[] cols = GetColumns(propertyName, criteria);
+ string[] cols = GetColumns(criteria, propertyName);
if (cols.Length != 1)
{
throw new QueryException("property does not map to a single column: " + propertyName);
@@ -546,7 +546,7 @@
// NH Different behavior: we don't use the projection alias for NH-1023
try
{
- return GetColumns(propertyName, subcriteria);
+ return GetColumns(subcriteria, propertyName);
}
catch (HibernateException)
{
@@ -579,7 +579,7 @@
return new TypedValue(loadable.IdentifierType, value, EntityMode.Poco);
}
- private string[] GetColumns(string propertyName, ICriteria subcriteria)
+ public string[] GetColumns(ICriteria subcriteria, string propertyName)
{
string entName = GetEntityName(subcriteria, propertyName);
if (entName == null)
@@ -795,7 +795,7 @@
//look for a property
try
{
- return GetColumns(propertyName, subcriteria);
+ return GetColumns(subcriteria, propertyName);
}
catch (HibernateException)
{
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2010-09-26 03:00:13 UTC (rev 5221)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2010-09-26 03:53:27 UTC (rev 5222)
@@ -239,9 +239,170 @@
}
[Test]
- [Ignore("To be implemented")]
public void SubselectWithComponent()
{
+ Course course = null;
+ Student gavin = null;
+ DetachedCriteria dc = null;
+ CityState odessaWa = null;
+ Enrolment enrolment2 = null;
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ session.Save(course);
+
+ odessaWa = new CityState("Odessa", "WA");
+
+ gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 232;
+ gavin.CityState = odessaWa;
+ session.Save(gavin);
+
+ enrolment2 = new Enrolment();
+ enrolment2.Course = course;
+ enrolment2.CourseCode = course.CourseCode;
+ enrolment2.Semester = 3;
+ enrolment2.Year = 1998;
+ enrolment2.Student = gavin;
+ enrolment2.StudentNumber = gavin.StudentNumber;
+ gavin.Enrolments.Add(enrolment2);
+
+ session.Persist(enrolment2);
+
+ dc = DetachedCriteria.For<Student>()
+ .Add(Property.ForName("CityState").Eq(odessaWa))
+ .SetProjection(Property.ForName("CityState"));
+
+ session.CreateCriteria<Student>()
+ .Add(Subqueries.Exists(dc))
+ .List();
+
+ t.Commit();
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ try
+ {
+ session.CreateCriteria<Student>()
+ .Add(Subqueries.PropertyEqAll("CityState", dc))
+ .List();
+
+ Assert.Fail("should have failed because cannot compare subquery results with multiple columns");
+ }
+ catch (QueryException ex)
+ {
+ // expected
+ }
+ t.Rollback();
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ try
+ {
+ session.CreateCriteria<Student>()
+ .Add(Property.ForName("CityState").EqAll(dc))
+ .List();
+
+ Assert.Fail("should have failed because cannot compare subquery results with multiple columns");
+ }
+ catch (QueryException ex)
+ {
+ // expected
+ }
+ finally
+ {
+ t.Rollback();
+ }
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ try
+ {
+ session.CreateCriteria<Student>()
+ .Add(Subqueries.In(odessaWa, dc))
+ .List();
+
+ Assert.Fail("should have failed because cannot compare subquery results with multiple columns");
+ }
+ catch (NHibernate.Exceptions.GenericADOException ex)
+ {
+ // expected
+ }
+ finally
+ {
+ t.Rollback();
+ }
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ DetachedCriteria dc2 = DetachedCriteria.For<Student>("st1")
+ .Add(Property.ForName("st1.CityState").EqProperty("st2.CityState"))
+ .SetProjection(Property.ForName("CityState"));
+
+ try
+ {
+ session.CreateCriteria<Student>("st2")
+ .Add( Subqueries.Eq(odessaWa, dc2))
+ .List();
+ Assert.Fail("should have failed because cannot compare subquery results with multiple columns");
+ }
+ catch (NHibernate.Exceptions.GenericADOException ex)
+ {
+ // expected
+ }
+ finally
+ {
+ t.Rollback();
+ }
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ DetachedCriteria dc3 = DetachedCriteria.For<Student>("st")
+ .CreateCriteria("Enrolments")
+ .CreateCriteria("Course")
+ .Add(Property.ForName("Description").Eq("Hibernate Training"))
+ .SetProjection(Property.ForName("st.CityState"));
+ try
+ {
+ session.CreateCriteria<Enrolment>("e")
+ .Add(Subqueries.Eq(odessaWa, dc3))
+ .List();
+
+ Assert.Fail("should have failed because cannot compare subquery results with multiple columns");
+ }
+ catch (NHibernate.Exceptions.GenericADOException ex)
+ {
+ // expected
+ }
+ finally
+ {
+ t.Rollback();
+ }
+ }
+
+ using (ISession session = OpenSession())
+ using (ITransaction t = session.BeginTransaction())
+ {
+ session.Delete(enrolment2);
+ session.Delete(gavin);
+ session.Delete(course);
+ t.Commit();
+ }
}
[Test]
@@ -1090,11 +1251,15 @@
Course course = new Course();
course.CourseCode = "HIB";
course.Description = "Hibernate Training";
+ course.CourseMeetings.Add(new CourseMeeting(course, "Monday", 1, "1313 Mockingbird Lane"));
s.Save(course);
Student gavin = new Student();
gavin.Name = "Gavin King";
gavin.StudentNumber = 667;
+ CityState odessaWa = new CityState("Odessa", "WA");
+ gavin.CityState = odessaWa;
+ gavin.PreferredCourse = course;
s.Save(gavin);
Student xam = new Student();
@@ -1123,11 +1288,92 @@
s.Save(enrolment);
s.Flush();
+ // Subtest #1
+ IList resultList = s.CreateCriteria<Enrolment>()
+ .SetProjection(Projections.ProjectionList()
+ .Add(Property.ForName("Student"), "student")
+ .Add(Property.ForName("Course"), "course")
+ .Add(Property.ForName("Semester"), "semester")
+ .Add(Property.ForName("Year"), "year")
+ ).List();
+
+ Assert.That(resultList.Count, Is.EqualTo(2));
+
+ foreach (object[] objects in resultList)
+ {
+ Assert.That(objects.Length, Is.EqualTo(4));
+ Assert.That(objects[0], Is.InstanceOf<Student>());
+ Assert.That(objects[1], Is.InstanceOf<Course>());
+ Assert.That(objects[2], Is.InstanceOf<short>());
+ Assert.That(objects[3], Is.InstanceOf<short>());
+ }
+
+ // Subtest #2
+ resultList = s.CreateCriteria<Student>()
+ .SetProjection(Projections.ProjectionList()
+ .Add(Projections.Id().As("StudentNumber"))
+ .Add(Property.ForName("Name"), "name")
+ .Add(Property.ForName("CityState"), "cityState")
+ .Add(Property.ForName("PreferredCourse"), "preferredCourse")
+ ).List();
+
+ Assert.That(resultList.Count, Is.EqualTo(2));
+
+ foreach(object[] objects in resultList)
+ {
+ Assert.That(objects.Length, Is.EqualTo(4));
+ Assert.That(objects[0], Is.InstanceOf<long>());
+ Assert.That(objects[1], Is.InstanceOf<string>());
+
+ if ("Gavin King".Equals(objects[1]))
+ {
+ Assert.That(objects[2], Is.InstanceOf<CityState>());
+ Assert.That(objects[3], Is.InstanceOf<Course>());
+ }
+ else
+ {
+ Assert.That(objects[2], Is.Null);
+ Assert.That(objects[3], Is.Null);
+ }
+ }
+
+ // Subtest #3
+ resultList = s.CreateCriteria<Student>()
+ .Add(Restrictions.Eq("Name", "Gavin King"))
+ .SetProjection(Projections.ProjectionList()
+ .Add(Projections.Id().As("StudentNumber"))
+ .Add(Property.ForName("Name"), "name")
+ .Add(Property.ForName("CityState"), "cityState")
+ .Add(Property.ForName("PreferredCourse"), "preferredCourse")
+ ).List();
+
+ Assert.That(resultList.Count, Is.EqualTo(1));
+
+ // Subtest #4
+ object[] aResult = (object[])s.CreateCriteria<Student>()
+ .Add(Restrictions.IdEq(667L))
+ .SetProjection(Projections.ProjectionList()
+ .Add(Projections.Id().As("StudentNumber"))
+ .Add(Property.ForName("Name"), "name")
+ .Add(Property.ForName("CityState"), "cityState")
+ .Add(Property.ForName("PreferredCourse"), "preferredCourse")
+ ).UniqueResult();
+
+ Assert.That(aResult, Is.Not.Null);
+ Assert.That(aResult.Length, Is.EqualTo(4));
+ Assert.That(aResult[0], Is.InstanceOf<long>());
+ Assert.That(aResult[1], Is.InstanceOf<string>());
+ Assert.That(aResult[2], Is.InstanceOf<CityState>());
+ Assert.That(aResult[3], Is.InstanceOf<Course>());
+
+ // Subtest #5
int count = (int)s.CreateCriteria(typeof(Enrolment))
.SetProjection(Property.ForName("StudentNumber").Count().SetDistinct())
.UniqueResult();
+
Assert.AreEqual(2, count);
+ // Subtest #6
object obj = s.CreateCriteria(typeof(Enrolment))
.SetProjection(Projections.ProjectionList()
.Add(Property.ForName("StudentNumber").Count())
@@ -1136,6 +1382,7 @@
.Add(Property.ForName("StudentNumber").Avg())
)
.UniqueResult();
+
object[] result = (object[])obj;
Assert.AreEqual(2, result[0]);
@@ -1143,7 +1390,7 @@
Assert.AreEqual(101L, result[2]);
Assert.AreEqual(384.0D, (double)result[3], 0.01D);
-
+ // Subtest #7
s.CreateCriteria(typeof(Enrolment))
.Add(Property.ForName("StudentNumber").Gt(665L))
.Add(Property.ForName("StudentNumber").Lt(668L))
@@ -1152,6 +1399,7 @@
.AddOrder(Property.ForName("StudentNumber").Asc())
.UniqueResult();
+ // Subtest #8
IList resultWithMaps = s.CreateCriteria(typeof(Enrolment))
.SetProjection(Projections.ProjectionList()
.Add(Property.ForName("StudentNumber").As("stNumber"))
@@ -1164,11 +1412,12 @@
.List();
Assert.AreEqual(1, resultWithMaps.Count);
+
IDictionary m1 = (IDictionary)resultWithMaps[0];
-
Assert.AreEqual(667L, m1["stNumber"]);
Assert.AreEqual(course.CourseCode, m1["cCode"]);
+ // Subtest #9
resultWithMaps = s.CreateCriteria(typeof(Enrolment))
.SetProjection(Property.ForName("StudentNumber").As("stNumber"))
.AddOrder(Order.Desc("stNumber"))
@@ -1176,19 +1425,19 @@
.List();
Assert.AreEqual(2, resultWithMaps.Count);
+
IDictionary m0 = (IDictionary)resultWithMaps[0];
m1 = (IDictionary)resultWithMaps[1];
-
Assert.AreEqual(101L, m1["stNumber"]);
Assert.AreEqual(667L, m0["stNumber"]);
-
+ // Subtest #10
IList resultWithAliasedBean = s.CreateCriteria(typeof(Enrolment))
.CreateAlias("Student", "st")
.CreateAlias("Course", "co")
.SetProjection(Projections.ProjectionList()
- .Add(Property.ForName("st.Name").As("studentName"))
- .Add(Property.ForName("co.Description").As("courseDescription"))
+ .Add(Property.ForName("st.Name").As("studentName"))
+ .Add(Property.ForName("co.Description").As("courseDescription"))
)
.AddOrder(Order.Desc("studentName"))
.SetResultTransformer(Transformers.AliasToBean(typeof(StudentDTO)))
@@ -1196,10 +1445,29 @@
Assert.AreEqual(2, resultWithAliasedBean.Count);
+ // Subtest #11
StudentDTO dto = (StudentDTO)resultWithAliasedBean[0];
Assert.IsNotNull(dto.Description);
Assert.IsNotNull(dto.Name);
+ // Subtest #12
+ CourseMeeting courseMeetingDto = s.CreateCriteria<CourseMeeting>()
+ .SetProjection(Projections.ProjectionList()
+ .Add(Property.ForName("Id").As("id"))
+ .Add(Property.ForName("Course").As("course"))
+ )
+ .AddOrder(Order.Desc("id"))
+ .SetResultTransformer(Transformers.AliasToBean<CourseMeeting>())
+ .UniqueResult<CourseMeeting>();
+
+ Assert.That(courseMeetingDto.Id, Is.Not.Null);
+ Assert.That(courseMeetingDto.Id.CourseCode, Is.EqualTo(course.CourseCode));
+ Assert.That(courseMeetingDto.Id.Day, Is.EqualTo("Monday"));
+ Assert.That(courseMeetingDto.Id.Location, Is.EqualTo("1313 Mockingbird Lane"));
+ Assert.That(courseMeetingDto.Id.Period, Is.EqualTo(1));
+ Assert.That(courseMeetingDto.Course.Description, Is.EqualTo(course.Description));
+
+ // Subtest #13
s.CreateCriteria(typeof(Student))
.Add(Expression.Like("Name", "Gavin", MatchMode.Start))
.AddOrder(Order.Asc("Name"))
@@ -1209,14 +1477,15 @@
.CreateCriteria("Course", "c")
.AddOrder(Order.Asc("Description"))
.SetProjection(Projections.ProjectionList()
- .Add(Property.ForName("this.Name"))
- .Add(Property.ForName("e.Year"))
- .Add(Property.ForName("e.Semester"))
- .Add(Property.ForName("c.CourseCode"))
- .Add(Property.ForName("c.Description"))
+ .Add(Property.ForName("this.Name"))
+ .Add(Property.ForName("e.Year"))
+ .Add(Property.ForName("e.Semester"))
+ .Add(Property.ForName("c.CourseCode"))
+ .Add(Property.ForName("c.Description"))
)
.UniqueResult();
+ // Subtest #14
ProjectionList p1 = Projections.ProjectionList()
.Add(Property.ForName("StudentNumber").Count())
.Add(Property.ForName("StudentNumber").Max())
@@ -1226,10 +1495,10 @@
.Add(Property.ForName("StudentNumber").Min())
.Add(Property.ForName("StudentNumber").Avg())
.Add(Projections.SqlProjection(
- "1 as constOne, count(*) as countStar",
- new String[] { "constOne", "countStar" },
- new IType[] { NHibernateUtil.Int32, NHibernateUtil.Int32 }
- ));
+ "1 as constOne, count(*) as countStar",
+ new String[] { "constOne", "countStar" },
+ new IType[] { NHibernateUtil.Int32, NHibernateUtil.Int32 }
+ ));
object[] array = (object[])s.CreateCriteria(typeof(Enrolment))
.SetProjection(Projections.ProjectionList().Add(p1).Add(p2))
@@ -1237,18 +1506,49 @@
Assert.AreEqual(7, array.Length);
+ // Subtest #15
IList list = s.CreateCriteria(typeof(Enrolment))
.CreateAlias("Student", "st")
.CreateAlias("Course", "co")
.SetProjection(Projections.ProjectionList()
- .Add(Property.ForName("co.CourseCode").Group())
- .Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
- .Add(Property.ForName("Year").Group())
+ .Add(Property.ForName("co.CourseCode").Group())
+ .Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
+ .Add(Property.ForName("Year").Group())
)
.List();
Assert.AreEqual(2, list.Count);
+ // Subtest #16
+ list = s.CreateCriteria<Enrolment>()
+ .CreateAlias("Student", "st")
+ .CreateAlias("Course", "co")
+ .SetProjection(Projections.ProjectionList()
+ .Add(Property.ForName("co.CourseCode").Group().As("courseCode"))
+ .Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("studentNumber"))
+ .Add(Property.ForName("Year").Group())
+ )
+ .AddOrder(Order.Asc("courseCode"))
+ .AddOrder(Order.Asc("studentNumber"))
+ .List();
+
+ Assert.That(list.Count, Is.EqualTo(2));
+
+ // Subtest #17
+ list = s.CreateCriteria<Enrolment>()
+ .CreateAlias("Student", "st")
+ .CreateAlias("Course", "co")
+ .SetProjection(Projections.ProjectionList()
+ .Add(Property.ForName("co.CourseCode").Group().As("cCode"))
+ .Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("stNumber"))
+ .Add(Property.ForName("Year").Group())
+ )
+ .AddOrder(Order.Asc("cCode"))
+ .AddOrder(Order.Asc("stNumber"))
+ .List();
+
+ Assert.That(list.Count, Is.EqualTo(2));
+
s.Delete(gavin);
s.Delete(xam);
s.Delete(course);
@@ -1258,15 +1558,272 @@
}
[Test]
- [Ignore("To be implemented")]
public void DistinctProjectionsOfComponents()
{
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ s.Save(course);
+
+ Student gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 667;
+ gavin.CityState = new CityState("Odessa", "WA");;
+ s.Save(gavin);
+
+ Student xam = new Student();
+ xam.Name = "Max Rydahl Andersen";
+ xam.StudentNumber = 101;
+ xam.PreferredCourse = course;
+ xam.CityState = new CityState("Odessa", "WA");;
+ s.Save(xam);
+
+ Enrolment enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 1;
+ enrolment.Year = 1999;
+ enrolment.Student = xam;
+ enrolment.StudentNumber = xam.StudentNumber;
+ xam.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 3;
+ enrolment.Year = 1998;
+ enrolment.Student = gavin;
+ enrolment.StudentNumber = gavin.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+ s.Flush();
+
+ object result = s.CreateCriteria<Student>()
+ .SetProjection(Projections.Distinct(Property.ForName("CityState")))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>()
+ .SetProjection(Projections.Distinct(Property.ForName("CityState").As("cityState")))
+ .AddOrder(Order.Asc("cityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>()
+ .SetProjection(Projections.Count("CityState.City"))
+ .UniqueResult();
+
+ Assert.That(result, Is.EqualTo(2));
+
+ result = s.CreateCriteria<Student>()
+ .SetProjection(Projections.CountDistinct("CityState.City"))
+ .UniqueResult();
+
+ Assert.That(result, Is.EqualTo(1));
+
+ t.Commit();
+ s.Close();
+
+// s = OpenSession();
+// t = s.BeginTransaction();
+// try
+// {
+// result = s.CreateCriteria<Student>()
+// .SetProjection(Projections.Count("CityState"))
+// .UniqueResult();
+//
+// if (!Dialect.SupportsTupleCounts)
+// {
+// fail( "expected SQLGrammarException" );
+// }
+//
+// Assert.That((long)result, Is.EqualTo(1L));
+// }
+// catch (NHibernate.Exceptions.SQLGrammarException ex)
+// {
+// throw ex;
+// if (!Dialect.SupportsTupleCounts)
+// {
+// // expected
+// }
+// else
+// {
+// throw ex;
+// }
+// }
+// finally
+// {
+// t.Rollback();
+// s.Close();
+// }
+
+// s = OpenSession();
+// t = s.BeginTransaction();
+// try
+// {
+// result = s.CreateCriteria<Student>()
+// .SetProjection(Projections.CountDistinct("CityState"))
+// .UniqueResult();
+//
+// if (!Dialect.SupportsTupleDistinctCounts)
+// {
+// fail("expected SQLGrammarException");
+// }
+//
+// Assert.That((long)result, Is.EqualTo(1L));
+// }
+// catch (NHibernate.Exceptions.SQLGrammarException ex)
+// {
+// throw ex;
+// if (Dialect.SupportsTupleDistinctCounts)
+// {
+// // expected
+// }
+// else
+// {
+// throw ex;
+// }
+// }
+// finally
+// {
+// t.Rollback();
+// s.Close();
+// }
+
+ s = OpenSession();
+ t = s.BeginTransaction();
+ s.Delete(gavin);
+ s.Delete(xam);
+ s.Delete(course);
+
+ t.Commit();
+ s.Close();
}
[Test]
- [Ignore("To be implemented")]
public void GroupByComponent()
{
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ s.Save(course);
+
+ Student gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 667;
+ gavin.CityState = new CityState("Odessa", "WA");;
+ s.Save(gavin);
+
+ Student xam = new Student();
+ xam.Name = "Max Rydahl Andersen";
+ xam.StudentNumber = 101;
+ xam.PreferredCourse = course;
+ xam.CityState = new CityState("Odessa", "WA");;
+ s.Save(xam);
+
+ Enrolment enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 1;
+ enrolment.Year = 1999;
+ enrolment.Student = xam;
+ enrolment.StudentNumber = xam.StudentNumber;
+ xam.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 3;
+ enrolment.Year = 1998;
+ enrolment.Student = gavin;
+ enrolment.StudentNumber = gavin.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+ s.Flush();
+
+ object result = s.CreateCriteria<Student>()
+ .SetProjection(Projections.GroupProperty("CityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>("st")
+ .SetProjection(Projections.GroupProperty("st.CityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>("st")
+ .SetProjection(Projections.GroupProperty("st.CityState"))
+ .AddOrder(Order.Asc("CityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>("st")
+ .SetProjection(Projections.GroupProperty("st.CityState").As("cityState"))
+ .AddOrder(Order.Asc("cityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>("st")
+ .SetProjection(Projections.GroupProperty("st.CityState").As("cityState"))
+ .AddOrder(Order.Asc("cityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ result = s.CreateCriteria<Student>("st")
+ .SetProjection(Projections.GroupProperty("st.CityState").As("cityState"))
+ .Add(Restrictions.Eq("st.CityState", new CityState("Odessa", "WA")))
+ .AddOrder(Order.Asc("cityState"))
+ .UniqueResult();
+
+ Assert.That(result, Is.InstanceOf<CityState>());
+ Assert.That(((CityState)result).City, Is.EqualTo("Odessa"));
+ Assert.That(((CityState)result).State, Is.EqualTo("WA"));
+
+ IList list = s.CreateCriteria<Enrolment>()
+ .CreateAlias("Student", "st")
+ .CreateAlias("Course", "co")
+ .SetProjection(Projections.ProjectionList()
+ .Add(Property.ForName("co.CourseCode").Group())
+ .Add(Property.ForName("st.CityState").Group())
+ .Add(Property.ForName("Year").Group())
+ )
+ .List();
+
+ s.Delete(gavin);
+ s.Delete(xam);
+ s.Delete(course);
+
+ t.Commit();
+ s.Close();
}
[Test]
@@ -1624,9 +2181,24 @@
}
[Test]
- [Ignore("To be implemented")]
public void ProjectedCompositeIdWithAlias()
{
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ course.CourseMeetings.Add(new CourseMeeting(course, "Monday", 1, "1313 Mockingbird Lane"));
+ s.Save(course);
+ s.Flush();
+
+ IList data = (IList)s.CreateCriteria<CourseMeeting>()
+ .SetProjection(Projections.Id().As("id"))
+ .List();
+
+ t.Rollback();
+ }
}
[Test]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jul...@us...> - 2010-09-26 03:00:19
|
Revision: 5221
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5221&view=rev
Author: julian-maughan
Date: 2010-09-26 03:00:13 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Document breaking change: removal of Sybase ASE dialects (see r5188)
Modified Paths:
--------------
trunk/nhibernate/releasenotes.txt
Modified: trunk/nhibernate/releasenotes.txt
===================================================================
--- trunk/nhibernate/releasenotes.txt 2010-09-26 02:53:50 UTC (rev 5220)
+++ trunk/nhibernate/releasenotes.txt 2010-09-26 03:00:13 UTC (rev 5221)
@@ -2,11 +2,12 @@
=============================
** Known BREAKING CHANGES from NH2.1.1.GA to NH3.0.0.Alpha3
##### Run time #####
- * (NH-2199) - null values in maps/dictionaries are no longer silenty ignored/deleted
- * (NH-1894) - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect
+ * [NH-2199] - null values in maps/dictionaries are no longer silenty ignored/deleted
+ * [NH-1894] - SybaseAnywhereDialect has been removed, and replaced with SybaseASA9Dialect.
+ - Sybase Adaptive Server Enterprise (ASE) dialects removed.
##### Possible Breaking Changes #####
- * (NH-2251) - Signature change for GetLimitString in Dialect
+ * [NH-2251] - Signature change for GetLimitString in Dialect
Build 3.0.0.Alpha2 (rev5159)
=============================
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jul...@us...> - 2010-09-26 02:53:59
|
Revision: 5220
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5220&view=rev
Author: julian-maughan
Date: 2010-09-26 02:53:50 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Added support for projections using composite keys and components (NH-2202). See also HHH-1088 (r19110).
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/AliasedProjection.cs
trunk/nhibernate/src/NHibernate/Criterion/Distinct.cs
trunk/nhibernate/src/NHibernate/Criterion/IProjection.cs
trunk/nhibernate/src/NHibernate/Criterion/ProjectionList.cs
trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs
trunk/nhibernate/src/NHibernate/Criterion/SimpleProjection.cs
trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs
trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/Criteria/Course.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Criteria/Student.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Criterion/IEnhancedProjection.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CityState.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeeting.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeetingId.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/AliasedProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/AliasedProjection.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/AliasedProjection.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,14 +1,14 @@
using System;
+using System.Collections.Generic;
+
using NHibernate.SqlCommand;
+using NHibernate.Engine;
using NHibernate.Type;
namespace NHibernate.Criterion
{
- using System.Collections.Generic;
- using Engine;
-
[Serializable]
- public class AliasedProjection : IProjection
+ public class AliasedProjection : IEnhancedProjection
{
private readonly IProjection projection;
private readonly string alias;
@@ -36,9 +36,9 @@
public virtual IType[] GetTypes(String alias, ICriteria criteria, ICriteriaQuery criteriaQuery)
{
- return this.alias.Equals(alias) ?
- GetTypes(criteria, criteriaQuery) :
- null;
+ return this.alias.Equals(alias)
+ ? GetTypes(criteria, criteriaQuery)
+ : null;
}
public virtual string[] GetColumnAliases(int loc)
@@ -48,10 +48,24 @@
public virtual string[] GetColumnAliases(string alias, int loc)
{
- return this.alias.Equals(alias) ?
- GetColumnAliases(loc) :
- null;
+ return this.alias.Equals(alias)
+ ? GetColumnAliases(loc)
+ : null;
}
+
+ public string[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ return projection is IEnhancedProjection
+ ? ((IEnhancedProjection)projection).GetColumnAliases(position, criteria, criteriaQuery)
+ : this.GetColumnAliases(position);
+ }
+
+ public string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ return this.alias.Equals(alias)
+ ? GetColumnAliases(position, criteria, criteriaQuery)
+ : null;
+ }
public virtual string[] Aliases
{
@@ -84,4 +98,4 @@
return projection.ToString() + " as " + alias;
}
}
-}
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Criterion/Distinct.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Distinct.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/Distinct.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,14 +1,13 @@
using System;
+using System.Collections.Generic;
+using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Criterion
{
- using System.Collections.Generic;
- using Engine;
-
[Serializable]
- public class Distinct : IProjection
+ public class Distinct : IEnhancedProjection
{
private readonly IProjection projection;
@@ -42,11 +41,25 @@
{
return projection.GetColumnAliases(loc);
}
+
+ public virtual string[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ return projection is IEnhancedProjection
+ ? ((IEnhancedProjection)projection).GetColumnAliases(position, criteria, criteriaQuery)
+ : GetColumnAliases(position);
+ }
public virtual string[] GetColumnAliases(string alias, int loc)
{
return projection.GetColumnAliases(alias, loc);
}
+
+ public virtual string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ return projection is IEnhancedProjection
+ ? ((IEnhancedProjection)projection).GetColumnAliases(alias, position, criteria, criteriaQuery)
+ : GetColumnAliases(alias, position);
+ }
public virtual string[] Aliases
{
@@ -79,4 +92,4 @@
return "distinct " + projection.ToString();
}
}
-}
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Criterion/IEnhancedProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/IEnhancedProjection.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/IEnhancedProjection.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,33 @@
+using System;
+
+namespace NHibernate.Criterion
+{
+ /// <summary>
+ /// An "enhanced" Projection for a <see cref="ICriteria" /> query.
+ /// </summary>
+ public interface IEnhancedProjection : IProjection
+ {
+ /// <summary>
+ /// Get the SQL column aliases used by this projection for the columns it writes for inclusion into the
+ /// <code>SELECT</code> clause <see cref="IProjection.ToSqlString" />. NHibernate always uses column aliases
+ /// to extract data from the <see cref="System.Data.IDataReader" />, so it is important that these be implemented
+ /// correctly in order for NHibernate to be able to extract these values correctly.
+ /// </summary>
+ /// <param name="position">Just as in <see cref="IProjection.ToSqlString" />, represents the number of columns rendered prior to this projection.</param>
+ /// <param name="criteria">The local criteria to which this project is attached (for resolution).</param>
+ /// <param name="criteriaQuery">The overall criteria query instance.</param>
+ /// <returns>The columns aliases.</returns>
+ string[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery);
+
+ /// <summary>
+ /// Get the SQL column aliases used by this projection for the columns it writes for inclusion into the
+ /// <code>SELECT</code> clause (<see cref="IProjection.ToSqlString" />) for a particular criteria-level alias.
+ /// </summary>
+ /// <param name="alias">The criteria-level alias.</param>
+ /// <param name="position">Just as in <see cref="IProjection.ToSqlString" />, represents the number of columns rendered prior to this projection.</param>
+ /// <param name="criteria">The local criteria to which this project is attached (for resolution).</param>
+ /// <param name="criteriaQuery">The overall criteria query instance.</param>
+ /// <returns>The columns aliases.</returns>
+ string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery);
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Criterion/IProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/IProjection.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/IProjection.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,13 +1,12 @@
using System;
+using System.Collections.Generic;
using NHibernate.SqlCommand;
+using NHibernate.Engine;
+using NHibernate.Loader.Criteria;
using NHibernate.Type;
namespace NHibernate.Criterion
{
- using System.Collections.Generic;
- using Engine;
- using NHibernate.Loader.Criteria;
-
public interface IProjection
{
/// <summary>
Modified: trunk/nhibernate/src/NHibernate/Criterion/ProjectionList.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/ProjectionList.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/ProjectionList.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,16 +1,18 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq.Expressions;
+
+using NHibernate.Engine;
using NHibernate.Impl;
using NHibernate.SqlCommand;
using NHibernate.Type;
+using NHibernate.Util;
namespace NHibernate.Criterion
{
- using Engine;
-
[Serializable]
- public class ProjectionList : IProjection
+ public class ProjectionList : IEnhancedProjection
{
private IList<IProjection> elements = new List<IProjection>();
@@ -60,8 +62,8 @@
for (int i = 0; i < Length; i++)
{
IProjection proj = this[i];
- buf.Add(proj.ToSqlString(criteria, loc, criteriaQuery,enabledFilters));
- loc += proj.GetColumnAliases(loc).Length;
+ buf.Add(proj.ToSqlString(criteria, loc, criteriaQuery, enabledFilters));
+ loc += GetColumnAliases(loc, criteria, criteriaQuery, proj).Length;
if (i < elements.Count - 1)
{
buf.Add(", ");
@@ -89,7 +91,7 @@
return buf.ToSqlString();
}
- public String[] GetColumnAliases(int loc)
+ public string[] GetColumnAliases(int loc)
{
IList<string> aliases = new List<string>(Length);
@@ -105,7 +107,7 @@
return result;
}
- public String[] GetColumnAliases(string alias, int loc)
+ public string[] GetColumnAliases(string alias, int loc)
{
for (int i = 0; i < Length; i++)
{
@@ -115,7 +117,44 @@
}
return null;
}
+
+ public string[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ IList result = new ArrayList(this.Length);
+ for (int i = 0; i < this.Length; i++)
+ {
+ string[] colAliases = ProjectionList.GetColumnAliases(position, criteria, criteriaQuery, this[i]);
+ ArrayHelper.AddAll(result, colAliases);
+ position += colAliases.Length;
+ }
+ return ArrayHelper.ToStringArray(result);
+ }
+
+ public string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ for (int i = 0; i < this.Length; i++)
+ {
+ string[] result = GetColumnAliases(alias, position, criteria, criteriaQuery, this[i]);
+ if (result != null) return result;
+ position += GetColumnAliases(position, criteria, criteriaQuery, this[i]).Length;
+ }
+ return null;
+ }
+
+ private static string[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery, IProjection projection)
+ {
+ return projection is IEnhancedProjection
+ ? ((IEnhancedProjection)projection).GetColumnAliases(position, criteria, criteriaQuery)
+ : projection.GetColumnAliases(position);
+ }
+ private static string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery, IProjection projection)
+ {
+ return projection is IEnhancedProjection
+ ? ((IEnhancedProjection)projection).GetColumnAliases(alias, position, criteria, criteriaQuery)
+ : projection.GetColumnAliases(alias, position);
+ }
+
public IType[] GetTypes(string alias, ICriteria criteria, ICriteriaQuery criteriaQuery)
{
for (int i = 0; i < Length; i++)
Modified: trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/PropertyProjection.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,11 +1,10 @@
using System;
+using System.Collections.Generic;
using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Criterion
{
- using System.Collections.Generic;
-
/// <summary>
/// A property value, or grouped property value
/// </summary>
@@ -53,13 +52,18 @@
public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
{
- return new SqlString(new object[]
- {
- criteriaQuery.GetColumn(criteria, propertyName),
- " as y",
- loc.ToString(),
- "_"
- });
+ SqlStringBuilder s = new SqlStringBuilder();
+ string[] cols = criteriaQuery.GetColumnsUsingProjection(criteria, propertyName);
+ for (int i = 0; i < cols.Length; i++)
+ {
+ s.Add(cols[i]);
+ s.Add(" as y");
+ s.Add((loc + i).ToString());
+ s.Add("_");
+ if (i < cols.Length - 1)
+ s.Add(", ");
+ }
+ return s.ToSqlString();
}
public override SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
@@ -71,4 +75,4 @@
return new SqlString(criteriaQuery.GetColumn(criteria, propertyName));
}
}
-}
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Criterion/SimpleProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/SimpleProjection.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Criterion/SimpleProjection.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,17 +1,16 @@
using System;
+using System.Collections.Generic;
using NHibernate.SqlCommand;
+using NHibernate.Engine;
using NHibernate.Type;
namespace NHibernate.Criterion
{
- using System.Collections.Generic;
- using Engine;
-
/// <summary>
/// A single-column projection that may be aliased
/// </summary>
[Serializable]
- public abstract class SimpleProjection : IProjection
+ public abstract class SimpleProjection : IEnhancedProjection
{
public IProjection As(string alias)
{
@@ -32,7 +31,24 @@
{
return new string[] {"y" + loc + "_"};
}
+
+ public string[] GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ return GetColumnAliases(alias, position);
+ }
+ public String[] GetColumnAliases(int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ int numColumns = this.GetColumnCount(criteria, criteriaQuery);
+ string[] aliases = new string[numColumns];
+ for (int i = 0; i < numColumns; i++)
+ {
+ aliases[i] = "y" + position + "_";
+ position++;
+ }
+ return aliases;
+ }
+
public virtual string[] Aliases
{
get { return new String[1]; }
@@ -44,7 +60,6 @@
public abstract bool IsAggregate { get; }
-
/// <summary>
/// Gets the typed values for parameters in this projection
/// </summary>
@@ -59,5 +74,16 @@
public abstract SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters);
public abstract IType[] GetTypes(ICriteria criteria, ICriteriaQuery criteriaQuery);
+
+ private int GetColumnCount(ICriteria criteria, ICriteriaQuery criteriaQuery)
+ {
+ IType[] types = this.GetTypes(criteria, criteriaQuery);
+ int count = 0;
+ for (int i = 0; i < types.Length; i++)
+ {
+ count += types[i].GetColumnSpan(criteriaQuery.Factory);
+ }
+ return count;
+ }
}
}
Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -8,6 +8,7 @@
using NHibernate.SqlCommand;
using NHibernate.Transform;
using NHibernate.Type;
+using NHibernate.Util;
namespace NHibernate.Loader.Criteria
{
@@ -84,10 +85,21 @@
IType[] types = translator.ProjectedTypes;
result = new object[types.Length];
string[] columnAliases = translator.ProjectedColumnAliases;
-
- for (int i = 0; i < result.Length; i++)
+
+ for (int i = 0, position = 0; i < result.Length; i++)
{
- result[i] = types[i].NullSafeGet(rs, columnAliases[i], session, null);
+ int numColumns = types[i].GetColumnSpan(session.Factory);
+
+ if ( numColumns > 1 )
+ {
+ string[] typeColumnAliases = ArrayHelper.Slice(columnAliases, position, numColumns);
+ result[i] = types[i].NullSafeGet(rs, typeColumnAliases, session, null);
+ }
+ else
+ {
+ result[i] = types[i].NullSafeGet(rs, columnAliases[position], session, null);
+ }
+ position += numColumns;
}
aliases = translator.ProjectedAliases;
}
Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -3,7 +3,6 @@
using System.Collections.Generic;
using System.Text;
using Iesi.Collections.Generic;
-
using NHibernate.Criterion;
using NHibernate.Engine;
using NHibernate.Hql.Util;
@@ -172,7 +171,12 @@
public string[] ProjectedColumnAliases
{
- get { return rootCriteria.Projection.GetColumnAliases(0); }
+ get
+ {
+ return rootCriteria.Projection is IEnhancedProjection
+ ? ((IEnhancedProjection)rootCriteria.Projection).GetColumnAliases(0, rootCriteria, this)
+ : rootCriteria.Projection.GetColumnAliases(0);
+ }
}
public string[] ProjectedAliases
@@ -402,7 +406,7 @@
IType type = lastEntity.ToType(componentPath);
if (type.IsAssociationType)
{
- if(type.IsCollectionType)
+ if(type.IsCollectionType)
{
// ignore joinables for composite collections
var collectionType = (CollectionType)type;
@@ -535,8 +539,7 @@
}
/// <summary>
- /// Get the names of the columns constrained
- /// by this criterion.
+ /// Get the names of the columns constrained by this criterion.
/// </summary>
public string[] GetColumnsUsingProjection(ICriteria subcriteria, string propertyName)
{
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-09-26 02:53:50 UTC (rev 5220)
@@ -109,6 +109,7 @@
<Compile Include="Connection\DriverConnectionProvider.cs" />
<Compile Include="Connection\IConnectionProvider.cs" />
<Compile Include="Connection\UserSuppliedConnectionProvider.cs" />
+ <Compile Include="Criterion\IEnhancedProjection.cs" />
<Compile Include="Dialect\DB2Dialect.cs" />
<Compile Include="Dialect\Dialect.cs" />
<Compile Include="Dialect\FirebirdDialect.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/Criteria/CityState.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CityState.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CityState.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,31 @@
+using System;
+
+namespace NHibernate.Test.Criteria
+{
+ [Serializable]
+ public class CityState
+ {
+ private string city;
+ private string state;
+
+ public CityState() {}
+
+ public CityState(string city, string state)
+ {
+ this.city = city;
+ this.state = state;
+ }
+
+ public virtual string City
+ {
+ get { return this.city; }
+ set { this.city = value; }
+ }
+
+ public virtual string State
+ {
+ get { return this.state; }
+ set { this.state = value; }
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Course.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Course.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Course.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,23 +1,30 @@
using System;
+using Iesi.Collections.Generic;
namespace NHibernate.Test.Criteria
{
public class Course
{
private string courseCode;
-
+ private string description;
+ private ISet<CourseMeeting> courseMeetings = new HashedSet<CourseMeeting>();
+
public virtual string CourseCode
{
get { return courseCode; }
set { courseCode = value; }
}
- private string description;
-
public virtual string Description
{
get { return description; }
set { description = value; }
}
+
+ public virtual ISet<CourseMeeting> CourseMeetings
+ {
+ get { return courseMeetings; }
+ set { courseMeetings = value; }
+ }
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeeting.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeeting.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeeting.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,28 @@
+namespace NHibernate.Test.Criteria
+{
+ public class CourseMeeting
+ {
+ private CourseMeetingId id;
+ private Course course;
+
+ public CourseMeeting() { }
+
+ public CourseMeeting(Course course, string day, int period, string location)
+ {
+ this.id = new CourseMeetingId(course, day, period, location);
+ this.course = course;
+ }
+
+ public virtual CourseMeetingId Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual Course Course
+ {
+ get { return course; }
+ set { course = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeetingId.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeetingId.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CourseMeetingId.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,60 @@
+using System;
+
+namespace NHibernate.Test.Criteria
+{
+ [Serializable]
+ public class CourseMeetingId
+ {
+ private string courseCode;
+ private string day;
+ private int period;
+ private string location;
+
+ public CourseMeetingId() { }
+
+ public CourseMeetingId(Course course, string day, int period, string location)
+ {
+ this.courseCode = course.CourseCode;
+ this.day = day;
+ this.period = period;
+ this.location = location;
+ }
+
+ public virtual string CourseCode
+ {
+ get { return courseCode; }
+ set { courseCode = value; }
+ }
+
+ public virtual string Day
+ {
+ get { return day; }
+ set { day = value; }
+ }
+
+ public virtual int Period
+ {
+ get { return period; }
+ set { period = value; }
+ }
+
+ public virtual string Location
+ {
+ get { return location; }
+ set { location = value; }
+ }
+
+ public override bool Equals(object obj)
+ {
+ CourseMeetingId that = obj as CourseMeetingId;
+ if (that == null)
+ return false;
+ return courseCode == that.CourseCode && day == that.Day && period == that.Period && location == that.Location;
+ }
+
+ public override int GetHashCode()
+ {
+ return courseCode.GetHashCode() ^ day.GetHashCode() ^ period.GetHashCode() ^ location.GetHashCode();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -67,7 +67,7 @@
using (ISession session = OpenSession())
{
- // finds all courses which contain '%' as the first char in the description
+ // finds all courses which contain '%' as the first char in the description
Course example = new Course();
example.Description = "&%%";
IList result =
@@ -237,8 +237,14 @@
t.Commit();
session.Close();
}
-
+
[Test]
+ [Ignore("To be implemented")]
+ public void SubselectWithComponent()
+ {
+ }
+
+ [Test]
public void CloningCriteria()
{
ISession s = OpenSession();
@@ -255,7 +261,7 @@
}
[Test]
- public void CloningCriteria_AddCount_RemoveOrderring()
+ public void CloningCriteria_AddCount_RemoveOrdering()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
@@ -353,7 +359,7 @@
[Test]
public void SubqueryPagination()
- {
+ {
using (ISession session = OpenSession())
using (ITransaction t = session.BeginTransaction())
{
@@ -690,7 +696,7 @@
Enrolment key = new Enrolment();
key.CourseCode = "HIB";
- key.StudentNumber = 101;// xam
+ key.StudentNumber = 101;// xam
//since we didn't load xam's entrollments before (skipped by orderring)
//it should not be already loaded
Enrolment shouldNotBeLoaded = (Enrolment)s.Load(typeof(Enrolment), key);
@@ -1228,6 +1234,7 @@
object[] array = (object[])s.CreateCriteria(typeof(Enrolment))
.SetProjection(Projections.ProjectionList().Add(p1).Add(p2))
.UniqueResult();
+
Assert.AreEqual(7, array.Length);
IList list = s.CreateCriteria(typeof(Enrolment))
@@ -1249,8 +1256,20 @@
t.Commit();
s.Close();
}
+
+ [Test]
+ [Ignore("To be implemented")]
+ public void DistinctProjectionsOfComponents()
+ {
+ }
[Test]
+ [Ignore("To be implemented")]
+ public void GroupByComponent()
+ {
+ }
+
+ [Test]
public void CloningProjectionsUsingProperty()
{
ISession s = OpenSession();
@@ -1479,8 +1498,182 @@
t.Rollback();
s.Close();
}
+
+ [Test]
+ public void ProjectedEmbeddedCompositeId()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ s.Save(course);
+
+ Student gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 667;
+ s.Save(gavin);
+
+ Student xam = new Student();
+ xam.Name = "Max Rydahl Andersen";
+ xam.StudentNumber = 101;
+ s.Save(xam);
+
+ Enrolment enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 1;
+ enrolment.Year = 1999;
+ enrolment.Student = xam;
+ enrolment.StudentNumber = xam.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 3;
+ enrolment.Year = 1998;
+ enrolment.Student = gavin;
+ enrolment.StudentNumber = gavin.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ s.Flush();
+
+ IList enrolments = (IList)s.CreateCriteria<Enrolment>()
+ .SetProjection(Projections.Id())
+ .List();
+
+ t.Rollback();
+ }
+ }
+
+ [Test]
+ public void ProjectedListIncludesEmbeddedCompositeId()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ s.Save(course);
+
+ Student gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 667;
+ s.Save(gavin);
+
+ Student xam = new Student();
+ xam.Name = "Max Rydahl Andersen";
+ xam.StudentNumber = 101;
+ s.Save(xam);
+
+ Enrolment enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 1;
+ enrolment.Year = 1999;
+ enrolment.Student = xam;
+ enrolment.StudentNumber = xam.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ enrolment = new Enrolment();
+ enrolment.Course = course;
+ enrolment.CourseCode = course.CourseCode;
+ enrolment.Semester = 3;
+ enrolment.Year = 1998;
+ enrolment.Student = gavin;
+ enrolment.StudentNumber = gavin.StudentNumber;
+ gavin.Enrolments.Add(enrolment);
+ s.Save(enrolment);
+
+ s.Flush();
+
+ IList data = (IList)s.CreateCriteria<Enrolment>()
+ .SetProjection(Projections.ProjectionList()
+ .Add(Projections.Property("Semester"))
+ .Add(Projections.Property("Year"))
+ .Add(Projections.Id()))
+ .List();
+
+ t.Rollback();
+ }
+ }
+
+ [Test]
+ public void ProjectedCompositeId()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Course course = new Course();
+ course.CourseCode = "HIB";
+ course.Description = "Hibernate Training";
+ course.CourseMeetings.Add(new CourseMeeting(course, "Monday", 1, "1313 Mockingbird Lane"));
+ s.Save(course);
+ s.Flush();
+
+ IList data = (IList)s.CreateCriteria<CourseMeeting>().SetProjection(Projections.Id()).List();
+ t.Rollback();
+ }
+ }
+
[Test]
+ [Ignore("To be implemented")]
+ public void ProjectedCompositeIdWithAlias()
+ {
+ }
+
+ [Test]
+ public void ProjectedComponent()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Student gaith = new Student();
+ gaith.Name = "Gaith Bell";
+ gaith.StudentNumber = 123;
+ gaith.CityState = new CityState("Chicago", "Illinois");
+ s.Save(gaith);
+ s.Flush();
+
+ IList cityStates = (IList)s.CreateCriteria<Student>()
+ .SetProjection(Projections.Property("CityState"))
+ .List();
+
+ t.Rollback();
+ }
+ }
+
+ [Test]
+ public void ProjectedListIncludesComponent()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Student gaith = new Student();
+ gaith.Name = "Gaith Bell";
+ gaith.StudentNumber = 123;
+ gaith.CityState = new CityState("Chicago", "Illinois");
+ s.Save(gaith);
+ s.Flush();
+
+ IList data = (IList)s.CreateCriteria<Student>()
+ .SetProjection(Projections.ProjectionList()
+ .Add(Projections.Property("CityState"))
+ .Add(Projections.Property("Name")))
+ .List();
+
+ t.Rollback();
+ }
+ }
+
+ [Test]
public void CloningProjectedId()
{
ISession s = OpenSession();
@@ -1871,7 +2064,7 @@
t.Commit();
}
}
-
+
[Test]
public void TransformToRowCountTest()
{
@@ -1910,53 +2103,53 @@
}
[Test]
- public void OrderProjectionAliasedTest()
- {
- ISession session = OpenSession();
- ITransaction t = session.BeginTransaction();
+ public void OrderProjectionAliasedTest()
+ {
+ ISession session = OpenSession();
+ ITransaction t = session.BeginTransaction();
- Course courseA = new Course();
- courseA.CourseCode = "HIB-A";
- courseA.Description = "Hibernate Training A";
- session.Save(courseA);
+ Course courseA = new Course();
+ courseA.CourseCode = "HIB-A";
+ courseA.Description = "Hibernate Training A";
+ session.Save(courseA);
- Student gavin = new Student();
- gavin.Name = "Gavin King";
- gavin.StudentNumber = 232;
- gavin.PreferredCourse = courseA;
- session.Save(gavin);
+ Student gavin = new Student();
+ gavin.Name = "Gavin King";
+ gavin.StudentNumber = 232;
+ gavin.PreferredCourse = courseA;
+ session.Save(gavin);
- Student leonardo = new Student();
- leonardo.Name = "Leonardo Quijano";
- leonardo.StudentNumber = 233;
- leonardo.PreferredCourse = courseA;
- session.Save(leonardo);
+ Student leonardo = new Student();
+ leonardo.Name = "Leonardo Quijano";
+ leonardo.StudentNumber = 233;
+ leonardo.PreferredCourse = courseA;
+ session.Save(leonardo);
- Student johnDoe = new Student();
- johnDoe.Name = "John Doe";
- johnDoe.StudentNumber = 235;
- johnDoe.PreferredCourse = null;
- session.Save(johnDoe);
+ Student johnDoe = new Student();
+ johnDoe.Name = "John Doe";
+ johnDoe.StudentNumber = 235;
+ johnDoe.PreferredCourse = null;
+ session.Save(johnDoe);
- IProjection conditional =
+ IProjection conditional =
Projections.Conditional(
- Restrictions.Eq("Name", "Gavin King"),
- Projections.Constant("Name"),
+ Restrictions.Eq("Name", "Gavin King"),
+ Projections.Constant("Name"),
Projections.Constant("AnotherName"));
- ICriteria criteria = session.CreateCriteria(typeof(Student));
- criteria.SetMaxResults(1);
- criteria.SetFirstResult(1);
- IList result = criteria.SetProjection(Projections.Alias(conditional, "CheckName"))
- .AddOrder(Order.Asc("CheckName"))
- .List();
+ ICriteria criteria = session.CreateCriteria(typeof(Student));
+ criteria.SetMaxResults(1);
+ criteria.SetFirstResult(1);
+ IList result = criteria.SetProjection(Projections.Alias(conditional, "CheckName"))
+ .AddOrder(Order.Asc("CheckName"))
+ .List();
- session.Delete(gavin);
- session.Delete(leonardo);
- session.Delete(johnDoe);
- session.Delete(courseA);
- t.Commit();
- session.Close();
+ session.Delete(gavin);
+ session.Delete(leonardo);
+ session.Delete(johnDoe);
+ session.Delete(courseA);
+ t.Commit();
+ session.Close();
}
[Test]
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -6,47 +6,42 @@
public class Enrolment
{
private Student student;
-
+ private Course course;
+ private long studentNumber;
+ private string courseCode = string.Empty;
+ private short year;
+ private short semester;
+
public virtual Student Student
{
get { return student; }
set { student = value; }
}
- private Course course;
-
public virtual Course Course
{
get { return course; }
set { course = value; }
}
- private long studentNumber;
-
public virtual long StudentNumber
{
get { return studentNumber; }
set { studentNumber = value; }
}
- private string courseCode = string.Empty;
-
public virtual string CourseCode
{
get { return courseCode; }
set { courseCode = value; }
}
- private short year;
-
public virtual short Year
{
get { return year; }
set { year = value; }
}
- private short semester;
-
public virtual short Semester
{
get { return semester; }
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.hbm.xml 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Enrolment.hbm.xml 2010-09-26 02:53:50 UTC (rev 5220)
@@ -1,5 +1,6 @@
<?xml version="1.0"?>
-<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+<hibernate-mapping
+ xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernate.Test"
namespace="NHibernate.Test.Criteria">
@@ -8,19 +9,39 @@
<generator class="assigned"/>
</id>
<property name="Description"/>
+ <set name="CourseMeetings" inverse="true" cascade="all-delete-orphan">
+ <key column="CourseCode"/>
+ <one-to-many class="CourseMeeting"/>
+ </set>
</class>
+ <class name="CourseMeeting">
+ <composite-id name="Id" class="CourseMeetingId">
+ <key-property name="CourseCode"/>
+ <key-property name="Day"/>
+ <key-property name="Period"/>
+ <key-property name="Location"/>
+ </composite-id>
+ <many-to-one name="Course" insert="false" update="false">
+ <column name="courseCode"/>
+ </many-to-one>
+ </class>
+
<class name="Student">
<id name="StudentNumber">
- <column name="studentId"/>
+ <column name="studentId"/>
<generator class="assigned"/>
</id>
<property name="Name" not-null="true"/>
+ <component name="CityState">
+ <property name="City" column="address_city"/>
+ <property name="State" column="address_state"/>
+ </component>
<set name="Enrolments" inverse="true" cascade="delete" fetch="subselect">
<key column="studentId"/>
<one-to-many class="Enrolment"/>
</set>
- <many-to-one name="PreferredCourse" column="preferredCourseCode"/>
+ <many-to-one name="PreferredCourse" column="preferredCourseCode"/>
</class>
<class name="Enrolment">
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Student.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Student.cs 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Student.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -6,31 +6,35 @@
public class Student
{
private long studentNumber;
-
+ private string name;
+ private CityState cityState;
+ private Course preferredCourse;
+ private ISet enrolments = new HashedSet();
+
public virtual long StudentNumber
{
get { return studentNumber; }
set { studentNumber = value; }
}
- private string name;
-
public virtual string Name
{
get { return name; }
set { name = value; }
}
+
+ public virtual CityState CityState
+ {
+ get { return cityState; }
+ set { cityState = value; }
+ }
- private Course preferredCourse;
-
public virtual Course PreferredCourse
{
get { return preferredCourse; }
set { preferredCourse = value; }
}
- private ISet enrolments = new HashedSet();
-
public virtual ISet Enrolments
{
get { return enrolments; }
Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202
___________________________________________________________________
Added: bugtraq:url
+ http://jira.nhibernate.org/browse/%BUGID%
Added: bugtraq:logregex
+ NH-\d+
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Fixture.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,58 @@
+namespace NHibernate.Test.NHSpecificTest.NH2202
+{
+ using System.Linq;
+ using Criterion;
+ using NUnit.Framework;
+
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ base.OnSetUp();
+
+ using (var s = OpenSession())
+ using (var tx = s.BeginTransaction())
+ {
+ var emp = new Employee() {EmployeeId = 1, NationalId = 1000};
+ emp.Addresses.Add(new EmployeeAddress() { Employee = emp, Type = "Postal" });
+ emp.Addresses.Add(new EmployeeAddress() { Employee = emp, Type = "Shipping" });
+ s.Save(emp);
+ tx.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (var s = OpenSession())
+ using (var tx = s.BeginTransaction())
+ {
+ s.Delete("from EmployeeAddress");
+ tx.Commit();
+ }
+
+ using (var s = OpenSession())
+ using (var tx = s.BeginTransaction())
+ {
+ s.Delete("from Employee");
+ tx.Commit();
+ }
+
+ base.OnTearDown();
+ }
+
+ [Test]
+ public void CanProjectEmployeeFromAddressUsingCriteria()
+ {
+ using (var s = OpenSession())
+ {
+ var employees = s.CreateCriteria<EmployeeAddress>("x3")
+ .Add(Restrictions.Eq("Type", "Postal"))
+ .SetProjection(Projections.Property("Employee"))
+ .List<Employee>();
+
+ Assert.That(employees.FirstOrDefault(), Is.InstanceOf<Employee>());
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Mappings.hbm.xml 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping
+ xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH2202">
+
+ <class name="Employee">
+
+ <composite-id>
+ <key-property name="NationalId" />
+ <key-property name="EmployeeId" />
+ </composite-id>
+
+ <set name="Addresses" cascade="save-update">
+ <key>
+ <column name="NationalId" />
+ <column name="EmployeeId" />
+ </key>
+ <one-to-many class="EmployeeAddress"/>
+ </set>
+
+ </class>
+
+ <class name="EmployeeAddress">
+
+ <composite-id>
+ <key-many-to-one name="Employee" class="Employee">
+ <column name="NationalId" />
+ <column name="EmployeeId" />
+ </key-many-to-one>
+ <key-property name="Type" />
+ </composite-id>
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2202/Model.cs 2010-09-26 02:53:50 UTC (rev 5220)
@@ -0,0 +1,77 @@
+using System;
+using Iesi.Collections;
+
+namespace NHibernate.Test.NHSpecificTest.NH2202
+{
+ public class Employee
+ {
+ private ISet _addresses;
+
+ public virtual int NationalId { get; set; }
+ public virtual int EmployeeId { get; set; }
+
+ public virtual ISet Addresses
+ {
+ get
+ {
+ return _addresses ?? (_addresses = new HashedSet());
+ }
+ set
+ {
+ _addresses = value;
+ }
+ }
+
+ public virtual bool Equals(Employee other)
+ {
+ if (ReferenceEquals(null, other)) return false;
+ if (ReferenceEquals(this, other)) return true;
+ return other.NationalId == NationalId && other.EmployeeId == EmployeeId;
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != typeof (Employee)) return false;
+ return Equals((Employee) obj);
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ return (NationalId*397) ^ EmployeeId;
+ }
+ }
+ }
+
+ public class EmployeeAddress
+ {
+ public virtual Employee Employee { get; set; }
+ public virtual string Type { get; set; }
+
+ public virtual bool Equals(EmployeeAddress other)
+ {
+ if (ReferenceEquals(null, other)) return false;
+ if (ReferenceEquals(this, other)) return true;
+ return Equals(other.Employee, Employee) && Equals(other.Type, Type);
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != typeof (EmployeeAddress)) return false;
+ return Equals((EmployeeAddress) obj);
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ return ((Employee != null ? Employee.GetHashCode() : 0)*397) ^ (Type != null ? Type.GetHashCode() : 0);
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-25 20:07:30 UTC (rev 5219)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 02:53:50 UTC (rev 5220)
@@ -164,7 +164,10 @@
<Compile Include="ConventionsTestCase.cs" />
<Compile Include="Criteria\AddNumberProjection.cs" />
<Compile Include="Criteria\Animal.cs" />
+ <Compile Include="Criteria\CityState.cs" />
<Compile Include="Criteria\Course.cs" />
+ <Compile Include="Criteria\CourseMeeting.cs" />
+ <Compile Include="Criteria\CourseMeetingId.cs" />
<Compile Include="Criteria\CriteriaQueryTest.cs" />
<Compile Include="Criteria\DetachedCriteriaSerializable.cs" />
<Compile Include="Criteria\Enrolment.cs" />
@@ -474,6 +477,8 @@
<Compile Include="NHSpecificTest\NH2148\BugFixture.cs" />
<Compile Include="NHSpecificTest\NH2148\Domain.cs" />
<Compile Include="NHSpecificTest\NH2188\AppDomainWithMultipleSearchPath.cs" />
+ <Compile Include="NHSpecificTest\NH2202\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2202\Model.cs" />
<Compile Include="NHSpecificTest\NH2224\Domain.cs" />
<Compile Include="NHSpecificTest\NH2224\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2245\Fixture.cs" />
@@ -1791,6 +1796,7 @@
<EmbeddedResource Include="NHSpecificTest\NH2322\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2278\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1136\Mappings.hbm.xml" />
+ <EmbeddedResource Include="NHSpecificTest\NH2202\Mappings.hbm.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NHibernate.ByteCode.Castle\NHibernate.ByteCode.Castle.csproj">
@@ -2644,6 +2650,7 @@
<EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" />
</ItemGroup>
<ItemGroup>
+ <Folder Include="NHSpecificTest\NH2202" />
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-25 20:07:36
|
Revision: 5219
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5219&view=rev
Author: fabiomaulo
Date: 2010-09-25 20:07:30 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Lazy-property was implemented the feature is now supported.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/LazyOneToOne/LazyOneToOneTest.cs
Modified: trunk/nhibernate/src/NHibernate.Test/LazyOneToOne/LazyOneToOneTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/LazyOneToOne/LazyOneToOneTest.cs 2010-09-25 18:06:13 UTC (rev 5218)
+++ trunk/nhibernate/src/NHibernate.Test/LazyOneToOne/LazyOneToOneTest.cs 2010-09-25 20:07:30 UTC (rev 5219)
@@ -6,7 +6,7 @@
namespace NHibernate.Test.LazyOneToOne
{
- [TestFixture, Ignore("Not supported.")]
+ [TestFixture]
public class LazyOneToOneTest : TestCase
{
protected override IList Mappings
@@ -19,15 +19,17 @@
get { return "NHibernate.Test"; }
}
- protected override bool AppliesTo(Dialect.Dialect dialect)
- {
- // this test work only with Field interception (NH-1618)
- return FieldInterceptionHelper.IsInstrumented( new Person() );
- }
+ //protected override bool AppliesTo(Dialect.Dialect dialect)
+ //{
+ // // this test work only with Field interception (NH-1618)
+ // return FieldInterceptionHelper.IsInstrumented( new Person() );
+ //}
protected override void Configure(Cfg.Configuration configuration)
{
- cfg.SetProperty(Environment.MaxFetchDepth, "2");
- cfg.SetProperty(Environment.UseSecondLevelCache, "false");
+ configuration.SetProperty(Environment.ProxyFactoryFactoryClass,
+ typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory).AssemblyQualifiedName);
+ configuration.SetProperty(Environment.MaxFetchDepth, "2");
+ configuration.SetProperty(Environment.UseSecondLevelCache, "false");
}
protected override string CacheConcurrencyStrategy
@@ -53,7 +55,7 @@
s = OpenSession();
t = s.BeginTransaction();
p = s.CreateQuery("from Person where name='Gavin'").UniqueResult<Person>();
- //Assert.That(!NHibernateUtil.IsPropertyInitialized(p, "Employee"));
+ Assert.That(!NHibernateUtil.IsPropertyInitialized(p, "Employee"));
Assert.That(p.Employee.Person, Is.SameAs(p));
Assert.That(NHibernateUtil.IsInitialized(p.Employee.Employments));
@@ -67,7 +69,7 @@
s = OpenSession();
t = s.BeginTransaction();
p = s.Get<Person>("Gavin");
- //Assert.That(!NHibernateUtil.IsPropertyInitialized(p, "Employee"));
+ Assert.That(!NHibernateUtil.IsPropertyInitialized(p, "Employee"));
Assert.That(p.Employee.Person, Is.SameAs(p));
Assert.That(NHibernateUtil.IsInitialized(p.Employee.Employments));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-25 18:06:20
|
Revision: 5218
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5218&view=rev
Author: fabiomaulo
Date: 2010-09-25 18:06:13 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Fix NH-2188
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2188/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2188/AppDomainWithMultipleSearchPath.cs
Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-25 15:47:16 UTC (rev 5217)
+++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2010-09-25 18:06:13 UTC (rev 5218)
@@ -4,6 +4,7 @@
using System.Configuration;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Text;
using System.Xml;
@@ -1837,11 +1838,11 @@
LogAndThrow(new MappingException(message, args.Exception));
}
- private static string GetDefaultConfigurationFilePath()
+ protected virtual string GetDefaultConfigurationFilePath()
{
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
- string relativeSearchPath = AppDomain.CurrentDomain.RelativeSearchPath;
- string binPath = relativeSearchPath == null ? baseDir : Path.Combine(baseDir, relativeSearchPath);
+ string relativeSearchPath = AppDomain.CurrentDomain.RelativeSearchPath.Split(';').First();
+ string binPath = Path.Combine(baseDir, relativeSearchPath);
return Path.Combine(binPath, DefaultHibernateCfgFileName);
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2188/AppDomainWithMultipleSearchPath.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2188/AppDomainWithMultipleSearchPath.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2188/AppDomainWithMultipleSearchPath.cs 2010-09-25 18:06:13 UTC (rev 5218)
@@ -0,0 +1,37 @@
+using System;
+using System.IO;
+using NHibernate.Cfg;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2188
+{
+ public class AppDomainWithMultipleSearchPath
+ {
+ public class MyNhConfiguration: Configuration
+ {
+ public string DefaultConfigurationFilePath()
+ {
+ return GetDefaultConfigurationFilePath();
+ }
+ }
+ [Test]
+ public void WhenSerchInMultiplePathsThenNotThrows()
+ {
+ string binPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");
+ var expected = Path.Combine(binPath, Configuration.DefaultHibernateCfgFileName);
+
+ try
+ {
+ AppDomain.CurrentDomain.AppendPrivatePath("bin");
+ AppDomain.CurrentDomain.AppendPrivatePath("DbScripts");
+ var configuration = new MyNhConfiguration();
+ configuration.DefaultConfigurationFilePath().Should().Be(expected);
+ }
+ finally
+ {
+ AppDomain.CurrentDomain.ClearPrivatePath();
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-25 15:47:16 UTC (rev 5217)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-25 18:06:13 UTC (rev 5218)
@@ -473,6 +473,7 @@
<Compile Include="NHSpecificTest\NH2147\DefaultBatchSize.cs" />
<Compile Include="NHSpecificTest\NH2148\BugFixture.cs" />
<Compile Include="NHSpecificTest\NH2148\Domain.cs" />
+ <Compile Include="NHSpecificTest\NH2188\AppDomainWithMultipleSearchPath.cs" />
<Compile Include="NHSpecificTest\NH2224\Domain.cs" />
<Compile Include="NHSpecificTest\NH2224\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2245\Fixture.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-25 15:47:22
|
Revision: 5217
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5217&view=rev
Author: fabiomaulo
Date: 2010-09-25 15:47:16 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Fix NH-2340
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/AbstractCharType.cs
Modified: trunk/nhibernate/src/NHibernate/Type/AbstractCharType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/AbstractCharType.cs 2010-09-25 15:24:43 UTC (rev 5216)
+++ trunk/nhibernate/src/NHibernate/Type/AbstractCharType.cs 2010-09-25 15:47:16 UTC (rev 5217)
@@ -21,14 +21,12 @@
public override object Get(IDataReader rs, int index)
{
string dbValue = Convert.ToString(rs[index]);
- if (dbValue == null)
+ // The check of the Length is a workaround see NH-2340
+ if (dbValue.Length > 0)
{
- return null;
- }
- else
- {
return dbValue[0];
}
+ return '\0'; // This line should never be executed
}
public override object Get(IDataReader rs, string name)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-25 15:24:50
|
Revision: 5216
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5216&view=rev
Author: fabiomaulo
Date: 2010-09-25 15:24:43 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Example for NH-2324 (only to show the right syntax)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/BulkUpdateWithCustomCompositeType.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeData.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Entity.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Mappings.hbm.xml
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/BulkUpdateWithCustomCompositeType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/BulkUpdateWithCustomCompositeType.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/BulkUpdateWithCustomCompositeType.cs 2010-09-25 15:24:43 UTC (rev 5216)
@@ -0,0 +1,60 @@
+using System;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2324
+{
+ public class BulkUpdateWithCustomCompositeType: BugTestCase
+ {
+ public class Scenario: IDisposable
+ {
+ private readonly ISessionFactory factory;
+
+ public Scenario(ISessionFactory factory)
+ {
+ this.factory = factory;
+ using (ISession s = factory.OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ var e = new Entity
+ {
+ Data = new CompositeData {DataA = new DateTime(2010, 1, 1), DataB = new DateTime(2010, 2, 2)}
+ };
+ s.Save(e);
+ t.Commit();
+ }
+ }
+
+ public void Dispose()
+ {
+ using (ISession s = factory.OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from Entity").ExecuteUpdate();
+ t.Commit();
+ }
+ }
+ }
+
+ [Test]
+ public void ShouldAllowBulkupdateWithCompositeUserType()
+ {
+ using (new Scenario(Sfi))
+ {
+ string queryString = @"update Entity m set m.Data.DataA = :dataA, m.Data.DataB = :dataB";
+
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ var query = s.CreateQuery(queryString)
+ .SetDateTime("dataA", new DateTime(2010, 3, 3))
+ .SetDateTime("dataB", new DateTime(2010, 4, 4));
+
+ query.Executing(q => q.ExecuteUpdate()).NotThrows();
+
+ t.Commit();
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeData.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeData.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeData.cs 2010-09-25 15:24:43 UTC (rev 5216)
@@ -0,0 +1,10 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH2324
+{
+ public class CompositeData
+ {
+ public virtual DateTime DataA { get; set; }
+ public virtual DateTime DataB { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/CompositeUserType.cs 2010-09-25 15:24:43 UTC (rev 5216)
@@ -0,0 +1,225 @@
+using System;
+using System.Data;
+using NHibernate.Engine;
+using NHibernate.Type;
+using NHibernate.UserTypes;
+
+namespace NHibernate.Test.NHSpecificTest.NH2324
+{
+ public class CompositeUserType : ICompositeUserType
+ {
+ #region ICompositeUserType Members
+
+ /// <summary>
+ /// Compare two instances of the class mapped by this type for persistence
+ /// "equality", ie. equality of persistent state.
+ /// </summary>
+ /// <param name="x"></param>
+ /// <param name="y"></param>
+ /// <returns></returns>
+ public new bool Equals(object x, object y)
+ {
+ if (ReferenceEquals(x, y))
+ {
+ return true;
+ }
+ else if (x == null ||
+ y == null)
+ {
+ return false;
+ }
+ else
+ {
+ return x.Equals(y);
+ }
+ }
+
+ /// <summary>
+ /// Get the "property names" that may be used in a query.
+ /// </summary>
+ /// <value></value>
+ public string[] PropertyNames
+ {
+ get
+ {
+ return new[]
+ {
+ "DataA",
+ "DataB"
+ };
+ }
+ }
+
+ /// <summary>
+ /// Get the corresponding "property types"
+ /// </summary>
+ /// <value></value>
+ public IType[] PropertyTypes
+ {
+ get
+ {
+ return new IType[]
+ {
+ NHibernateUtil.DateTime,
+ NHibernateUtil.DateTime
+ };
+ }
+ }
+
+ /// <summary>
+ /// Get the value of a property
+ /// </summary>
+ /// <param name="component">an instance of class mapped by this "type"</param>
+ /// <param name="property"></param>
+ /// <returns>the property value</returns>
+ public object GetPropertyValue(object component, int property)
+ {
+ var p = (CompositeData) component;
+ if (property == 0)
+ {
+ return p.DataA;
+ }
+ else
+ {
+ return p.DataB;
+ }
+ }
+
+ /// <summary>
+ /// Set the value of a property
+ /// </summary>
+ /// <param name="component">an instance of class mapped by this "type"</param>
+ /// <param name="property"></param>
+ /// <param name="value">the value to set</param>
+ public void SetPropertyValue(object component, int property, object value)
+ {
+ throw new NotImplementedException();
+ }
+
+ /// <summary>
+ /// The class returned by NullSafeGet().
+ /// </summary>
+ /// <value></value>
+ public System.Type ReturnedClass
+ {
+ get { return typeof (CompositeData); }
+ }
+
+ /// <summary>
+ /// Get a hashcode for the instance, consistent with persistence "equality"
+ /// </summary>
+ /// <param name="x"></param>
+ /// <returns></returns>
+ public int GetHashCode(object x)
+ {
+ return x.GetHashCode();
+ }
+
+ /// <summary>
+ /// Retrieve an instance of the mapped class from a IDataReader. Implementors
+ /// should handle possibility of null values.
+ /// </summary>
+ /// <param name="dr">IDataReader</param>
+ /// <param name="names">the column names</param>
+ /// <param name="session"></param>
+ /// <param name="owner">the containing entity</param>
+ /// <returns></returns>
+ public object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner)
+ {
+ var data = new CompositeData();
+ data.DataA = (DateTime) NHibernateUtil.DateTime.NullSafeGet(dr, new[] {names[0]}, session, owner);
+ data.DataB = (DateTime) NHibernateUtil.DateTime.NullSafeGet(dr, new[] {names[1]}, session, owner);
+
+ return data;
+ }
+
+ /// <summary>
+ /// Write an instance of the mapped class to a prepared statement.
+ /// Implementors should handle possibility of null values.
+ /// A multi-column type should be written to parameters starting from index.
+ /// </summary>
+ /// <param name="cmd"></param>
+ /// <param name="value"></param>
+ /// <param name="index"></param>
+ /// <param name="session"></param>
+ public void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session)
+ {
+ if (value == null)
+ {
+ ((IDataParameter) cmd.Parameters[index]).Value = DBNull.Value;
+ ((IDataParameter) cmd.Parameters[index + 1]).Value = DBNull.Value;
+ }
+ else
+ {
+ var data = (CompositeData) value;
+ NHibernateUtil.DateTime.Set(cmd, data.DataA, index);
+ NHibernateUtil.DateTime.Set(cmd, data.DataB, index + 1);
+ }
+ }
+
+ /// <summary>
+ /// Return a deep copy of the persistent state, stopping at entities and at collections.
+ /// </summary>
+ /// <param name="value">generally a collection element or entity field</param>
+ /// <returns></returns>
+ public object DeepCopy(object value)
+ {
+ return value;
+ }
+
+ /// <summary>
+ /// Are objects of this type mutable?
+ /// </summary>
+ /// <value></value>
+ public bool IsMutable
+ {
+ get { return true; }
+ }
+
+ /// <summary>
+ /// Transform the object into its cacheable representation.
+ /// At the very least this method should perform a deep copy.
+ /// That may not be enough for some implementations, method should perform a deep copy. That may not be enough for some implementations, however; for example, associations must be cached as identifier values. (optional operation)
+ /// </summary>
+ /// <param name="value">the object to be cached</param>
+ /// <param name="session"></param>
+ /// <returns></returns>
+ public object Disassemble(object value, ISessionImplementor session)
+ {
+ return DeepCopy(value);
+ }
+
+ /// <summary>
+ /// Reconstruct an object from the cacheable representation.
+ /// At the very least this method should perform a deep copy. (optional operation)
+ /// </summary>
+ /// <param name="cached">the object to be cached</param>
+ /// <param name="session"></param>
+ /// <param name="owner"></param>
+ /// <returns></returns>
+ public object Assemble(object cached, ISessionImplementor session, object owner)
+ {
+ return DeepCopy(cached);
+ }
+
+ /// <summary>
+ /// During merge, replace the existing (target) value in the entity we are merging to
+ /// with a new (original) value from the detached entity we are merging. For immutable
+ /// objects, or null values, it is safe to simply return the first parameter. For
+ /// mutable objects, it is safe to return a copy of the first parameter. However, since
+ /// composite user types often define component values, it might make sense to recursively
+ /// replace component values in the target object.
+ /// </summary>
+ /// <param name="original"></param>
+ /// <param name="target"></param>
+ /// <param name="session"></param>
+ /// <param name="owner"></param>
+ /// <returns></returns>
+ public object Replace(object original, object target, ISessionImplementor session, object owner)
+ {
+ return original;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Entity.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Entity.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Entity.cs 2010-09-25 15:24:43 UTC (rev 5216)
@@ -0,0 +1,9 @@
+namespace NHibernate.Test.NHSpecificTest.NH2324
+{
+ public class Entity
+ {
+ public virtual long Id { get; set; }
+
+ public virtual CompositeData Data { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2324/Mappings.hbm.xml 2010-09-25 15:24:43 UTC (rev 5216)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.NHSpecificTest.NH2324"
+ assembly="NHibernate.Test">
+
+ <class name="Entity">
+ <id name="Id">
+ <generator class="hilo" >
+ <param name="max_lo">100</param>
+ </generator>
+ </id>
+
+ <property name="Data" type="CompositeUserType">
+ <column name="DataA"/>
+ <column name="DataB"/>
+ </property>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-24 13:45:53 UTC (rev 5215)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-25 15:24:43 UTC (rev 5216)
@@ -501,6 +501,10 @@
<Compile Include="NHSpecificTest\NH2322\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2322\Model.cs" />
<Compile Include="NHSpecificTest\NH2322\PostUpdateEventListener.cs" />
+ <Compile Include="NHSpecificTest\NH2324\CompositeData.cs" />
+ <Compile Include="NHSpecificTest\NH2324\CompositeUserType.cs" />
+ <Compile Include="NHSpecificTest\NH2324\Entity.cs" />
+ <Compile Include="NHSpecificTest\NH2324\BulkUpdateWithCustomCompositeType.cs" />
<Compile Include="NHSpecificTest\NH2344\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2344\Model.cs" />
<Compile Include="TypesTest\CharClass.cs" />
@@ -2297,6 +2301,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2324\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2344\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2112\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2147\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-09-24 13:46:00
|
Revision: 5215
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5215&view=rev
Author: fabiomaulo
Date: 2010-09-24 13:45:53 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
fix NH-2344 (thanks to Jose Romaniello)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs
trunk/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs 2010-09-24 12:30:53 UTC (rev 5214)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs 2010-09-24 13:45:53 UTC (rev 5215)
@@ -420,5 +420,10 @@
{
return new HqlBitwiseOr(_factory, lhs, rhs);
}
+
+ public HqlTreeNode Coalesce(HqlExpression lhs, HqlExpression rhs)
+ {
+ return new HqlCoalesce(_factory, lhs, rhs);
+ }
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs 2010-09-24 12:30:53 UTC (rev 5214)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs 2010-09-24 13:45:53 UTC (rev 5215)
@@ -595,6 +595,16 @@
}
}
+ public class HqlCoalesce : HqlExpression
+ {
+ public HqlCoalesce(IASTFactory factory, HqlExpression lhs, HqlExpression rhs)
+ : base(HqlSqlWalker.METHOD_CALL, "coalesce", factory)
+ {
+ AddChild(new HqlIdent(factory, "coalesce"));
+ AddChild(new HqlExpressionList(factory, lhs, rhs));
+ }
+ }
+
public class HqlExpressionList : HqlStatement
{
public HqlExpressionList(IASTFactory factory, params HqlExpression[] expressions)
Modified: trunk/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs 2010-09-24 12:30:53 UTC (rev 5214)
+++ trunk/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs 2010-09-24 13:45:53 UTC (rev 5215)
@@ -325,6 +325,9 @@
case ExpressionType.GreaterThanOrEqual:
return _hqlTreeBuilder.GreaterThanOrEqual(lhs, rhs);
+
+ case ExpressionType.Coalesce:
+ return _hqlTreeBuilder.Coalesce(lhs, rhs);
}
throw new InvalidOperationException();
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Fixture.cs 2010-09-24 13:45:53 UTC (rev 5215)
@@ -0,0 +1,44 @@
+using System.Linq;
+using NHibernate.Linq;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH2344
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnTearDown()
+ {
+ using (ISession s = OpenSession())
+ {
+ s.Delete("from Person");
+ s.Flush();
+ }
+ base.OnTearDown();
+ }
+
+ [Test]
+ public void CoalesceShouldWork()
+ {
+ int personId;
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ var p1 = new Person { Name = "inserted name" };
+ var p2 = new Person { Name = null};
+
+ s.Save(p1);
+ s.Save(p2);
+ personId = p2.Id;
+ tx.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ using (s.BeginTransaction())
+ {
+ var person = s.Query<Person>().Where(p => (p.Name ?? "e") == "e").First();
+ Assert.AreEqual(personId, person.Id);
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Mappings.hbm.xml 2010-09-24 13:45:53 UTC (rev 5215)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping
+ xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH2344">
+
+ <class name="Person">
+ <id name="Id">
+ <generator class="hilo" />
+ </id>
+ <property name="Name"/>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2344/Model.cs 2010-09-24 13:45:53 UTC (rev 5215)
@@ -0,0 +1,8 @@
+namespace NHibernate.Test.NHSpecificTest.NH2344
+{
+ public class Person
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-24 12:30:53 UTC (rev 5214)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-24 13:45:53 UTC (rev 5215)
@@ -501,6 +501,8 @@
<Compile Include="NHSpecificTest\NH2322\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2322\Model.cs" />
<Compile Include="NHSpecificTest\NH2322\PostUpdateEventListener.cs" />
+ <Compile Include="NHSpecificTest\NH2344\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2344\Model.cs" />
<Compile Include="TypesTest\CharClass.cs" />
<Compile Include="TypesTest\CharClassFixture.cs" />
<Compile Include="TypesTest\DateTimeClass.cs" />
@@ -2295,6 +2297,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2344\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2112\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2147\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2138\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-09-24 12:30:59
|
Revision: 5214
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5214&view=rev
Author: fabiomaulo
Date: 2010-09-24 12:30:53 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2346 (checked with H3.2.6)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/Table.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/Table.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/Table.cs 2010-09-24 12:18:20 UTC (rev 5213)
+++ trunk/nhibernate/src/NHibernate/Mapping/Table.cs 2010-09-24 12:30:53 UTC (rev 5214)
@@ -433,6 +433,7 @@
{
buf.Append(dialect.GetTableComment(comment));
}
+ buf.Append(dialect.TableTypeString);
return buf.ToString();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-24 12:18:27
|
Revision: 5213
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5213&view=rev
Author: fabiomaulo
Date: 2010-09-24 12:18:20 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2096
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/AbstractBinaryType.cs
trunk/nhibernate/src/NHibernate.Test/TypesTest/BinaryBlobTypeFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Type/AbstractBinaryType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/AbstractBinaryType.cs 2010-09-24 04:51:37 UTC (rev 5212)
+++ trunk/nhibernate/src/NHibernate/Type/AbstractBinaryType.cs 2010-09-24 12:18:20 UTC (rev 5213)
@@ -83,7 +83,11 @@
{
int length = (int)rs.GetBytes(index, 0, null, 0, 0);
byte[] buffer = new byte[length];
- rs.GetBytes(index, 0, buffer, 0, length);
+ if (length > 0)
+ {
+ // The "if" is to make happy MySQL NH-2096
+ rs.GetBytes(index, 0, buffer, 0, length);
+ }
return ToExternalFormat(buffer);
}
Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/BinaryBlobTypeFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/TypesTest/BinaryBlobTypeFixture.cs 2010-09-24 04:51:37 UTC (rev 5212)
+++ trunk/nhibernate/src/NHibernate.Test/TypesTest/BinaryBlobTypeFixture.cs 2010-09-24 12:18:20 UTC (rev 5213)
@@ -1,6 +1,7 @@
using System;
using System.Text;
using NUnit.Framework;
+using SharpTestsEx;
namespace NHibernate.Test.TypesTest
{
@@ -50,5 +51,26 @@
s.Flush();
s.Close();
}
+
+ [Test]
+ public void ReadWriteZeroLen()
+ {
+ object savedId;
+ using (ISession s = OpenSession())
+ {
+ BinaryBlobClass b = new BinaryBlobClass();
+ b.BinaryBlob = new byte[0];
+ savedId = s.Save(b);
+ s.Flush();
+ }
+
+ using (var s = OpenSession())
+ {
+ var b = s.Get<BinaryBlobClass>(savedId);
+ b.BinaryBlob.Should().Not.Be.Null().And.Have.Count.EqualTo(0);
+ s.Delete(b);
+ 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-09-24 04:51:42
|
Revision: 5212
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5212&view=rev
Author: fabiomaulo
Date: 2010-09-24 04:51:37 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Ups!
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/App.config
Modified: trunk/nhibernate/src/NHibernate.Test/App.config
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/App.config 2010-09-24 04:50:50 UTC (rev 5211)
+++ trunk/nhibernate/src/NHibernate.Test/App.config 2010-09-24 04:51:37 UTC (rev 5212)
@@ -126,7 +126,7 @@
</logger>
<logger name="NHibernate.SQL">
- <level value="DEBUG" />
+ <level value="OFF" />
</logger>
<logger name="NHibernate.AdoNet.AbstractBatcher">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-24 04:50:58
|
Revision: 5211
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5211&view=rev
Author: fabiomaulo
Date: 2010-09-24 04:50:50 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2112
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/GenericMapType.cs
trunk/nhibernate/src/NHibernate/Type/MapType.cs
trunk/nhibernate/src/NHibernate.Test/App.config
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Type/GenericMapType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/GenericMapType.cs 2010-09-24 03:01:49 UTC (rev 5210)
+++ trunk/nhibernate/src/NHibernate/Type/GenericMapType.cs 2010-09-24 04:50:50 UTC (rev 5211)
@@ -79,6 +79,14 @@
result[key] = value;
}
+ var originalPc = original as IPersistentCollection;
+ var resultPc = result as IPersistentCollection;
+ if (originalPc != null && resultPc != null)
+ {
+ if (!originalPc.IsDirty)
+ resultPc.ClearDirty();
+ }
+
return result;
}
Modified: trunk/nhibernate/src/NHibernate/Type/MapType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/MapType.cs 2010-09-24 03:01:49 UTC (rev 5210)
+++ trunk/nhibernate/src/NHibernate/Type/MapType.cs 2010-09-24 04:50:50 UTC (rev 5211)
@@ -89,6 +89,14 @@
result[key] = value;
}
+ var originalPc = original as IPersistentCollection;
+ var resultPc = result as IPersistentCollection;
+ if (originalPc != null && resultPc != null)
+ {
+ if (!originalPc.IsDirty)
+ resultPc.ClearDirty();
+ }
+
return result;
}
Modified: trunk/nhibernate/src/NHibernate.Test/App.config
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/App.config 2010-09-24 03:01:49 UTC (rev 5210)
+++ trunk/nhibernate/src/NHibernate.Test/App.config 2010-09-24 04:50:50 UTC (rev 5211)
@@ -126,7 +126,7 @@
</logger>
<logger name="NHibernate.SQL">
- <level value="OFF" />
+ <level value="DEBUG" />
</logger>
<logger name="NHibernate.AdoNet.AbstractBatcher">
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Fixture.cs 2010-09-24 04:50:50 UTC (rev 5211)
@@ -0,0 +1,78 @@
+using NUnit.Framework;
+using NHibernate.Cfg;
+
+namespace NHibernate.Test.NHSpecificTest.NH2112
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void Configure(Configuration configuration)
+ {
+ configuration.SetProperty(Environment.GenerateStatistics, "true");
+ configuration.SetProperty(Environment.BatchSize, "0");
+ }
+
+ protected override void OnTearDown()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ s.CreateSQLQuery("DELETE FROM AMapB").ExecuteUpdate();
+ s.CreateSQLQuery("DELETE FROM TableA").ExecuteUpdate();
+ s.CreateSQLQuery("DELETE FROM TableB").ExecuteUpdate();
+ tx.Commit();
+ }
+ }
+
+ [Test]
+ public void Test()
+ {
+ A a;
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ a = new A();
+ a.Name = "A";
+ B b1 = new B{ Name = "B1"};
+ s.Save(b1);
+ B b2 = new B{ Name = "B2"};
+ s.Save(b2);
+ a.Map.Add(b1 , "B1Text");
+ a.Map.Add(b2, "B2Text");
+ s.Save(a);
+ s.Flush();
+ tx.Commit();
+ }
+ ClearCounts();
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ A aCopy = (A)s.Merge(a);
+ s.Flush();
+ tx.Commit();
+ }
+ AssertUpdateCount(0);
+ AssertInsertCount(0);
+ }
+ protected void ClearCounts()
+ {
+ sessions.Statistics.Clear();
+ }
+
+ protected void AssertInsertCount(long expected)
+ {
+ Assert.That(sessions.Statistics.EntityInsertCount, Is.EqualTo(expected), "unexpected insert count");
+ }
+
+ protected void AssertUpdateCount(int expected)
+ {
+ Assert.That(sessions.Statistics.EntityUpdateCount, Is.EqualTo(expected), "unexpected update count");
+ }
+
+ protected void AssertDeleteCount(int expected)
+ {
+ Assert.That(sessions.Statistics.EntityDeleteCount, Is.EqualTo(expected), "unexpected delete count");
+ }
+
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Mappings.hbm.xml 2010-09-24 04:50:50 UTC (rev 5211)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.NHSpecificTest.NH2112"
+ assembly="NHibernate.Test">
+
+ <class name="A" table="TableA">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <version name="Version" column="Version"/>
+ <property name="Name"/>
+ <map name="Map" table ="AMapB" cascade="all-delete-orphan" lazy="true">
+ <key column="AId"/>
+ <index-many-to-many class="B" column="BId"/>
+ <element column="Text" type="System.String"/>
+ </map>
+ </class>
+
+ <class name="B" table="TableB">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <property name="Name"/>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2112/Model.cs 2010-09-24 04:50:50 UTC (rev 5211)
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH2112
+{
+ [Serializable]
+ public abstract class BaseEntity<TEntity, TKey> : IEquatable<TEntity>
+ where TEntity : BaseEntity<TEntity, TKey>
+ where TKey : struct
+ {
+ public virtual TKey? Id { get; set; }
+
+ public virtual bool Equals(TEntity other)
+ {
+ if (other == null) return false;
+ if (object.ReferenceEquals(this, other)) return true;
+ if (Id != null && other.Id == null) return false;
+ if (Id == null && other.Id != null) return false;
+ if (Id == null && other.Id == null)
+ return object.ReferenceEquals(this, other);
+ else
+ return Id.Value.Equals(other.Id.Value);
+ }
+ public override bool Equals(object obj)
+ {
+
+ return this.Equals(obj as TEntity);
+ }
+ private int? mHashCode;
+ public override int GetHashCode()
+ {
+ if (mHashCode == null) // le hashcode retourné doit être le meme tout le long de la vie de l'objet
+ {
+ if (this.Id != null)
+ mHashCode = this.Id.GetHashCode();
+ else mHashCode = base.GetHashCode();
+ }
+ return mHashCode.Value;
+ }
+ public virtual bool IsNew
+ {
+ get
+ {
+ return (Id == null);
+ }
+ }
+ }
+
+ public class A : BaseEntity<A, int>
+ {
+ public A()
+ {
+ Map = new Dictionary<B, string>();
+ }
+
+ private int version;
+ public virtual int Version
+ {
+ get { return version; }
+ set { version = value; }
+ }
+
+ public virtual string Name { get; set; }
+ public virtual IDictionary<B, string> Map { get; set; }
+
+ }
+
+ public class B : BaseEntity<B, int>
+ {
+ public virtual string Name { get; set; }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-24 03:01:49 UTC (rev 5210)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-24 04:50:50 UTC (rev 5211)
@@ -467,6 +467,8 @@
<Compile Include="NHSpecificTest\NH1836\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2111\A.cs" />
<Compile Include="NHSpecificTest\NH2111\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2112\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2112\Model.cs" />
<Compile Include="NHSpecificTest\NH2138\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2147\DefaultBatchSize.cs" />
<Compile Include="NHSpecificTest\NH2148\BugFixture.cs" />
@@ -2293,6 +2295,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2112\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2147\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2138\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithDefault.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-24 03:01:55
|
Revision: 5210
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5210&view=rev
Author: fabiomaulo
Date: 2010-09-24 03:01:49 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2161
Modified Paths:
--------------
trunk/nhibernate/releasenotes.txt
Modified: trunk/nhibernate/releasenotes.txt
===================================================================
--- trunk/nhibernate/releasenotes.txt 2010-09-24 02:46:33 UTC (rev 5209)
+++ trunk/nhibernate/releasenotes.txt 2010-09-24 03:01:49 UTC (rev 5210)
@@ -230,6 +230,7 @@
* Antlr3.Runtime.dll is required
* the syntax foo.bar.baz.elements or foo.bar.baz.indices is not longer supported. Use the alternative syntax of elements(foo.bar.baz) or indices(foo.bar.baz) instead
Note: in some case, where a sub-select is needed, the collection is enough example: FROM m IN CLASS Master WHERE NOT EXISTS( FROM m.Details d WHERE NOT d.I=5 )
+ * INamingStrategy.PropertyToColumnName does not include the component property path
##### Possible Breaking Changes #####
* ISession interface has additional methods
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-24 02:46:39
|
Revision: 5209
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5209&view=rev
Author: fabiomaulo
Date: 2010-09-24 02:46:33 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2292
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs
Modified: trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2010-09-24 02:40:17 UTC (rev 5208)
+++ trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2010-09-24 02:46:33 UTC (rev 5209)
@@ -49,7 +49,7 @@
/// <exception cref="HibernateException">
/// Thrown when the Proxy has no Session or the Session is closed or disconnected.
/// </exception>
- public void Initialize()
+ public virtual void Initialize()
{
if (!initialized)
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-24 02:40:23
|
Revision: 5208
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5208&view=rev
Author: fabiomaulo
Date: 2010-09-24 02:40:17 +0000 (Fri, 24 Sep 2010)
Log Message:
-----------
Fix NH-2321
Modified Paths:
--------------
trunk/nhibernate/doc/reference/modules/basic_mapping.xml
Modified: trunk/nhibernate/doc/reference/modules/basic_mapping.xml
===================================================================
--- trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-09-23 23:10:31 UTC (rev 5207)
+++ trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2010-09-24 02:40:17 UTC (rev 5208)
@@ -72,11 +72,13 @@
<para><emphasis>
Tip: to enable IntelliSense for mapping and configuration files, copy the appropriate
- <literal>.xsd</literal> files to
- <literal><VS.NET installation directory>\Common7\Packages\schemas\xml</literal>
- if you are using Visual Studio .NET 2003, or to
- <literal><VS 2005 installation directory>\Xml\Schemas</literal> for Visual Studio 2005.
- </emphasis></para>
+ <literal>.xsd</literal> files as part of any project in your solution,
+ (<literal>Build Action</literal> can be "None") or as "Solution Files" or in your
+ <literal>"Lib"</literal> folder and then add it to the <literal>Schemas</literal> property of the xml file.
+ You can copy it in <literal><VS installation directory>\Xml\Schemas</literal>, take care because you will have to deal
+ with different version of the xsd for different versions of NHibernate.
+ </emphasis>
+ </para>
</sect2>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-23 23:10:37
|
Revision: 5207
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5207&view=rev
Author: fabiomaulo
Date: 2010-09-23 23:10:31 +0000 (Thu, 23 Sep 2010)
Log Message:
-----------
Fix NH-2147
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs
trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs 2010-09-23 17:07:21 UTC (rev 5206)
+++ trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs 2010-09-23 23:10:31 UTC (rev 5207)
@@ -36,7 +36,7 @@
private readonly List<Table> subclassTables = new List<Table>();
private bool dynamicInsert;
private bool dynamicUpdate;
- private int batchSize = 1;
+ private int? batchSize;
private bool selectBeforeUpdate;
private IDictionary<string, MetaAttribute> metaAttributes;
private readonly List<Join> joins = new List<Join>();
@@ -372,7 +372,7 @@
/// <summary>
///
/// </summary>
- public int BatchSize
+ public int? BatchSize
{
get { return batchSize; }
set { batchSize = value; }
Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2010-09-23 17:07:21 UTC (rev 5206)
+++ trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2010-09-23 23:10:31 UTC (rev 5207)
@@ -278,11 +278,8 @@
entityNameBySubclass[subclass.MappedClass] = subclass.EntityName;
}
}
- int batch = persistentClass.BatchSize;
- if (batch == -1)
- batch = factory.Settings.DefaultBatchFetchSize;
- batchSize = batch;
+ batchSize = persistentClass.BatchSize.HasValue ? persistentClass.BatchSize.Value : factory.Settings.DefaultBatchFetchSize;
hasSubselectLoadableCollections = persistentClass.HasSubselectLoadableCollections;
propertyMapping = new BasicEntityPropertyMapping(this);
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs 2010-09-23 23:10:31 UTC (rev 5207)
@@ -0,0 +1,62 @@
+using System.Reflection;
+using NHibernate.Cfg;
+using NHibernate.Engine;
+using NHibernate.Persister.Entity;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2147
+{
+ public class DefaultBatchSize
+ {
+ private const BindingFlags DefaultFlags =
+ BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly;
+
+ private readonly FieldInfo fieldInfo = typeof(AbstractEntityPersister).GetField("batchSize", DefaultFlags);
+
+ [Test]
+ public void WhenNoDefaultAndNoSpecificThenUse1()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+ cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly);
+ var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory();
+ var persister = sf.GetEntityPersister("MyClassWithoutBatchSize");
+ persister.IsBatchLoadable.Should().Be.False();
+
+ // hack
+ fieldInfo.GetValue(persister).Should().Be(1);
+ }
+
+ [Test]
+ public void WhenDefaultAndNoSpecificThenUseDefault()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+ cfg.SetProperty(Environment.DefaultBatchFetchSize, "20");
+
+ cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly);
+ var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory();
+ var persister = sf.GetEntityPersister("MyClassWithoutBatchSize");
+
+ persister.IsBatchLoadable.Should().Be.True();
+
+ // hack
+ fieldInfo.GetValue(persister).Should().Be(20);
+ }
+
+ [Test]
+ public void WhenDefaultAndSpecificThenUseSpecific()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+ cfg.SetProperty(Environment.DefaultBatchFetchSize, "20");
+
+ cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly);
+ var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory();
+ var persister = sf.GetEntityPersister("MyClassWithBatchSize");
+
+ persister.IsBatchLoadable.Should().Be.True();
+
+ // hack
+ fieldInfo.GetValue(persister).Should().Be(10);
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml 2010-09-23 23:10:31 UTC (rev 5207)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
+ <class entity-name="MyClassWithoutBatchSize">
+ <id type="int">
+ <generator class="native" />
+ </id>
+ <property name="Name" type="string"/>
+ </class>
+
+ <class entity-name="MyClassWithBatchSize" batch-size="10">
+ <id type="int">
+ <generator class="native" />
+ </id>
+ <property name="Name" type="string"/>
+ </class>
+
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 17:07:21 UTC (rev 5206)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 23:10:31 UTC (rev 5207)
@@ -468,6 +468,7 @@
<Compile Include="NHSpecificTest\NH2111\A.cs" />
<Compile Include="NHSpecificTest\NH2111\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2138\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2147\DefaultBatchSize.cs" />
<Compile Include="NHSpecificTest\NH2148\BugFixture.cs" />
<Compile Include="NHSpecificTest\NH2148\Domain.cs" />
<Compile Include="NHSpecificTest\NH2224\Domain.cs" />
@@ -2292,6 +2293,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2147\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2138\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithDefault.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithNothing.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-23 17:07:27
|
Revision: 5206
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5206&view=rev
Author: fabiomaulo
Date: 2010-09-23 17:07:21 +0000 (Thu, 23 Sep 2010)
Log Message:
-----------
Fix NH-2138
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2010-09-23 15:51:58 UTC (rev 5205)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2010-09-23 17:07:21 UTC (rev 5206)
@@ -98,11 +98,11 @@
if (StringHelper.IsEmpty(alias))
alias = "alias_" + count; // hack/workaround as sqlquery impl depend on having a key.
- string entityName = GetClassName(returnSchema.@class, mappings);
-
- if (entityName == null)
+ if (string.IsNullOrEmpty(returnSchema.@class) && string.IsNullOrEmpty(returnSchema.entityname))
throw new MappingException("<return alias='" + alias + "'> must specify either a class or entity-name");
+ string entityName = returnSchema.entityname ?? GetClassName(returnSchema.@class, mappings);
+
LockMode lockMode = GetLockMode(returnSchema.lockmode);
PersistentClass pc = mappings.GetClass(entityName);
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Fixture.cs 2010-09-23 17:07:21 UTC (rev 5206)
@@ -0,0 +1,21 @@
+using NHibernate.Engine.Query.Sql;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2138
+{
+ [TestFixture]
+ public class Fixture
+ {
+ [Test]
+ public void AfterAddAppingShouldHaveAResultsetWithEntityName()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+ cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2138.Mappings.hbm.xml", GetType().Assembly);
+ cfg.Executing(c => c.BuildMappings()).NotThrows();
+ var sqlQuery = cfg.NamedSQLQueries["AllCoders"];
+ var rootReturn = (NativeSQLQueryRootReturn)sqlQuery.QueryReturns[0];
+ rootReturn.ReturnEntityName.Should().Be("Coder");
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2138/Mappings.hbm.xml 2010-09-23 17:07:21 UTC (rev 5206)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
+
+ <class entity-name="Coder" table="persons">
+ <id type="int">
+ <generator class="increment" />
+ </id>
+ <property name="Name" type="string"/>
+ </class>
+
+ <sql-query name="AllCoders">
+ <return entity-name="Coder" alias="c" />
+ SELECT {c.*}
+ FROM persons c
+ </sql-query>
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 15:51:58 UTC (rev 5205)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 17:07:21 UTC (rev 5206)
@@ -467,6 +467,7 @@
<Compile Include="NHSpecificTest\NH1836\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2111\A.cs" />
<Compile Include="NHSpecificTest\NH2111\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2138\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2148\BugFixture.cs" />
<Compile Include="NHSpecificTest\NH2148\Domain.cs" />
<Compile Include="NHSpecificTest\NH2224\Domain.cs" />
@@ -2291,6 +2292,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2138\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithDefault.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithNothing.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithSpecific.hbm.xml" />
@@ -2628,7 +2630,6 @@
<EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" />
</ItemGroup>
<ItemGroup>
- <Folder Include="NHSpecificTest\NH1136" />
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2010-09-23 15:52:06
|
Revision: 5205
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5205&view=rev
Author: fabiomaulo
Date: 2010-09-23 15:51:58 +0000 (Thu, 23 Sep 2010)
Log Message:
-----------
Actualization to Castle.Core 2.5.1
Modified Paths:
--------------
trunk/nhibernate/lib/net/3.5/Castle.Core.dll
trunk/nhibernate/lib/net/3.5/Castle.Core.pdb
trunk/nhibernate/lib/net/3.5/Castle.Core.xml
Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.dll
===================================================================
(Binary files differ)
Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.pdb
===================================================================
(Binary files differ)
Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.xml
===================================================================
--- trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-09-22 22:11:09 UTC (rev 5204)
+++ trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-09-23 15:51:58 UTC (rev 5205)
@@ -39,6 +39,17 @@
<param name="property">The property.</param>
<returns>true if the property should be stored.</returns>
</member>
+ <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder">
+ <summary>
+ Defines the contract for building <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior"/>s.
+ </summary>
+ </member>
+ <member name="M:Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder.BuildBehaviors">
+ <summary>
+ Builds the dictionary behaviors.
+ </summary>
+ <returns></returns>
+ </member>
<member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter">
<summary>
Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support
@@ -161,6 +172,18 @@
<value></value>
<returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns>
</member>
+ <member name="F:Castle.Core.Internal.InternalsVisible.ToCastleCore">
+ <summary>
+ Constant to use when making assembly internals visible to Castle.Core
+ <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]</c>
+ </summary>
+ </member>
+ <member name="F:Castle.Core.Internal.InternalsVisible.ToDynamicProxyGenAssembly2">
+ <summary>
+ Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types.
+ <c>[assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]</c>
+ </summary>
+ </member>
<member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor">
<summary>
Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>.
@@ -611,6 +634,13 @@
<param name="property">The property.</param>
<param name="behaviors">The property behaviors.</param>
</member>
+ <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)">
+ <summary>
+ Copies an existinginstance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class.
+ </summary>
+ <param name="source"></param>
+ <param name="copyBehaviors"></param>
+ </member>
<member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
<summary>
Gets the key.
@@ -736,6 +766,13 @@
<param name="behaviors"></param>
<returns></returns>
</member>
+ <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(Castle.Components.DictionaryAdapter.IDictionaryBehaviorBuilder[])">
+ <summary>
+ Adds the behaviors from the builders.
+ </summary>
+ <param name="builders"></param>
+ <returns></returns>
+ </member>
<member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)">
<summary>
Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
@@ -1237,26 +1274,26 @@
</member>
<member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
<summary>
- Base class that exposes the common functionalities
- to proxy generation.
+ Base class that exposes the common functionalities
+ to proxy generation.
</summary>
</member>
<member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
<summary>
- Generates a parameters constructor that initializes the proxy
- state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null.
- <para>
- This constructor is important to allow proxies to be XML serializable
- </para>
+ Generates a parameters constructor that initializes the proxy
+ state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null.
+ <para>
+ This constructor is important to allow proxies to be XML serializable
+ </para>
</summary>
</member>
<member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})">
<summary>
- It is safe to add mapping (no mapping for the interface exists)
+ It is safe to add mapping (no mapping for the interface exists)
</summary>
- <param name="implementer"></param>
- <param name="interface"></param>
- <param name="mapping"></param>
+ <param name = "implementer"></param>
+ <param name = "interface"></param>
+ <param name = "mapping"></param>
</member>
<member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)">
<summary>
@@ -1269,7 +1306,7 @@
</member>
<member name="T:Castle.DynamicProxy.DefaultProxyBuilder">
<summary>
- Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies.
+ Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies.
</summary>
</member>
<member name="T:Castle.DynamicProxy.IProxyBuilder">
@@ -1394,12 +1431,12 @@
</member>
<member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor">
<summary>
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="T:Castle.DynamicProxy.ModuleScope"/>.
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="T:Castle.DynamicProxy.ModuleScope"/>.
</summary>
</member>
<member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)">
<summary>
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class.
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class.
</summary>
<param name="scope">The module scope for generated proxy types.</param>
</member>
@@ -1438,11 +1475,6 @@
<param name="interfaces">The interfaces.</param>
<param name="options">The options.</param>
</member>
- <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
- <summary>
-
- </summary>
- </member>
<member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary">
<summary>s
Provides appropriate Ldc.X opcode for the type of primitive value to be loaded.
@@ -1557,11 +1589,6 @@
</summary>
<returns>New naming scope.</returns>
</member>
- <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
- <summary>
-
- </summary>
- </member>
<member name="T:Castle.DynamicProxy.Generators.MethodFinder">
<summary>
Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue
@@ -1621,23 +1648,33 @@
</summary>
<param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
</member>
- <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.String,System.String,System.String,System.String)">
+ <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
+ should be saved.
+ </summary>
+ <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+ <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param>
+ </member>
+ <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,System.String,System.String,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
should be saved and what simple names are to be assigned to them.
</summary>
<param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+ <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param>
<param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
<param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
<param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
<param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
</member>
- <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)">
+ <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
should be saved and what simple names are to be assigned to them.
</summary>
<param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+ <param name="disableSignedModule">If set to <c>true</c> disables ability to generate signed module. This should be used in cases where ran under constrained permissions.</param>
<param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param>
<param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
<param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
@@ -1810,23 +1847,23 @@
</member>
<member name="T:Castle.DynamicProxy.ProxyGenerator">
<summary>
- Provides proxy objects for classes and interfaces.
+ Provides proxy objects for classes and interfaces.
</summary>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)">
<summary>
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
</summary>
<param name="builder">Proxy types builder.</param>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor">
<summary>
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
</summary>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
<param name="target">The target object, calls to which will be intercepted.</param>
@@ -1838,22 +1875,22 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="options">The proxy generation options used to influence generated proxy type and object.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.
+ Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
@@ -1861,21 +1898,21 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -1886,22 +1923,22 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="options">The proxy generation options used to influence generated proxy type and object.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -1912,22 +1949,22 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -1938,15 +1975,15 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
@@ -1954,7 +1991,7 @@
<param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -1965,22 +2002,22 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
- use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -1991,20 +2028,20 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
@@ -2012,21 +2049,21 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="options">The proxy generation options used to influence generated proxy type and object.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
@@ -2034,21 +2071,21 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -2059,21 +2096,21 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
<param name="options">The proxy generation options used to influence generated proxy type and object.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -2084,14 +2121,14 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
- Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+ Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
</summary>
<param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
<param name="target">The target object, calls to which will be intercepted.</param>
@@ -2099,7 +2136,7 @@
<param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
@@ -2110,218 +2147,218 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>.
</summary>
<typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
<param name="interceptor">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
+ Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
<remarks>
- Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
- They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
- As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+ As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
<member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])">
<summary>
- Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>.
</summary>
<typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
<param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
<returns>
- Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
+ Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
</returns>
<exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
<exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
<remarks>
- Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
- They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
- As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
- This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
- As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+ As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation ...
[truncated message content] |
|
From: <fab...@us...> - 2010-09-22 22:11:15
|
Revision: 5204
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5204&view=rev
Author: fabiomaulo
Date: 2010-09-22 22:11:09 +0000 (Wed, 22 Sep 2010)
Log Message:
-----------
Fix NH-2343
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/GenericBagType.cs
Modified: trunk/nhibernate/src/NHibernate/Type/GenericBagType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/GenericBagType.cs 2010-09-22 21:01:34 UTC (rev 5203)
+++ trunk/nhibernate/src/NHibernate/Type/GenericBagType.cs 2010-09-22 22:11:09 UTC (rev 5204)
@@ -40,7 +40,7 @@
public override System.Type ReturnedClass
{
- get { return typeof(IList<T>); }
+ get { return typeof(ICollection<T>); }
}
/// <summary>
@@ -53,16 +53,19 @@
/// </returns>
public override IPersistentCollection Wrap(ISessionImplementor session, object collection)
{
- return new PersistentGenericBag<T>(session, (IList<T>) collection);
+ return new PersistentGenericBag<T>(session, (ICollection<T>) collection);
}
- //TODO: Add() & Clear() methods - need to see if these should be refactored back into
- // their own version of Copy or a DoCopy. The Copy() method used to be spread out amongst
- // the various collections, but since they all had common code Add() and Clear() were made
- // virtual since that was where most of the logic was. A different/better way might be to
- // have a Copy on the base collection that handles the standard checks and then a DoCopy
- // that performs the actual copy.
+ protected override void Add(object collection, object element)
+ {
+ ((ICollection<T>) collection).Add((T) element);
+ }
+ protected override void Clear(object collection)
+ {
+ ((ICollection<T>)collection).Clear();
+ }
+
public override object Instantiate(int anticipatedSize)
{
return anticipatedSize <= 0 ? new List<T>() : new List<T>(anticipatedSize + 1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|