|
From: <fab...@us...> - 2009-06-25 03:50:33
|
Revision: 4528
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4528&view=rev
Author: fabiomaulo
Date: 2009-06-25 03:50:31 +0000 (Thu, 25 Jun 2009)
Log Message:
-----------
Proof of concept of Loquacious session-factory configuration.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IBatcherConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICacheConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICollectionFactoryConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICommandsConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IConnectionConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbSchemaIntegrationConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IFluentSessionFactoryConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IMappingsConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IProxyConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IQueryCacheConfiguration.cs
trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ITransactionConfiguration.cs
trunk/nhibernate/src/NHibernate.Test/CfgTest/Loquacious/
trunk/nhibernate/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IBatcherConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IBatcherConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IBatcherConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,9 @@
+using NHibernate.AdoNet;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IBatcherConfiguration
+ {
+ IBatcherConfiguration Trough<TBatcher>() where TBatcher : IBatcherFactory;
+ IDbIntegrationConfiguration Each(short batchSize);
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICacheConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICacheConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICacheConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,12 @@
+using NHibernate.Cache;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface ICacheConfiguration
+ {
+ ICacheConfiguration Trough<TProvider>() where TProvider : ICacheProvider;
+ ICacheConfiguration PrefixingRegionsWith(string regionPrefix);
+ ICacheConfiguration UsingMinimalPuts();
+ IFluentSessionFactoryConfiguration WithDefaultExpiration(byte seconds);
+ IQueryCacheConfiguration Queries { get; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICollectionFactoryConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICollectionFactoryConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICollectionFactoryConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,8 @@
+using NHibernate.Bytecode;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface ICollectionFactoryConfiguration
+ {
+ IFluentSessionFactoryConfiguration Trough<TCollecionsFactory>() where TCollecionsFactory : ICollectionTypeFactory;
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICommandsConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICommandsConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ICommandsConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,21 @@
+using NHibernate.Exceptions;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface ICommandsConfiguration
+ {
+ ICommandsConfiguration Preparing();
+ ICommandsConfiguration WithTimeout(int seconds);
+ ICommandsConfiguration ConvertingExpetionsTrough<TExceptionConverter>() where TExceptionConverter : ISQLExceptionConverter;
+ ICommandsConfiguration AutoCommentingSql();
+ IDbIntegrationConfiguration WithHqlToSqlSubstitutions(string csvQuerySubstitutions);
+ IDbIntegrationConfiguration WithDefaultHqlToSqlSubstitutions();
+
+ /// <summary>
+ /// Maximum depth of outer join fetching
+ /// </summary>
+ /// <remarks>
+ /// 0 (zero) disable the usage of OuterJoinFetching
+ /// </remarks>
+ ICommandsConfiguration WithMaximumDepthOfOuterJoinFetching(byte maxFetchDepth);
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IConnectionConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IConnectionConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IConnectionConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,18 @@
+using System.Data;
+using System.Data.Common;
+using NHibernate.Driver;
+using NHibernate.Connection;
+
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IConnectionConfiguration
+ {
+ IConnectionConfiguration Trough<TProvider>() where TProvider : IConnectionProvider;
+ IConnectionConfiguration Through<TDriver>() where TDriver : IDriver;
+ IConnectionConfiguration With(IsolationLevel level);
+ IConnectionConfiguration Releasing(ConnectionReleaseMode releaseMode);
+ IDbIntegrationConfiguration Using(string connectionString);
+ IDbIntegrationConfiguration Using(DbConnectionStringBuilder connectionStringBuilder);
+ IDbIntegrationConfiguration ByAppConfing(string connectionStringName);
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,27 @@
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IDbIntegrationConfiguration
+ {
+ /// <summary>
+ /// Define the dialect to use.
+ /// </summary>
+ /// <typeparam name="TDialect">The dialect implementation inherited from <see cref="Dialect.Dialect"/>. </typeparam>
+ /// <returns>The fluent configuration itself.</returns>
+ IDbIntegrationConfiguration Using<TDialect>() where TDialect : Dialect.Dialect;
+ IDbIntegrationConfiguration DisableKeywordsAutoImport();
+ IDbIntegrationConfiguration AutoQuoteKeywords();
+ IDbIntegrationConfiguration LogSqlInConsole();
+ IDbIntegrationConfiguration DisableLogFormatedSql();
+
+ IConnectionConfiguration Connected { get; }
+
+ IBatcherConfiguration BatchingQueries { get; }
+
+ ITransactionConfiguration Transactions { get; }
+
+ ICommandsConfiguration CreateCommands { get; }
+
+ IDbSchemaIntegrationConfiguration Schema { get; }
+
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbSchemaIntegrationConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbSchemaIntegrationConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IDbSchemaIntegrationConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,10 @@
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IDbSchemaIntegrationConfiguration
+ {
+ IDbIntegrationConfiguration Recreating();
+ IDbIntegrationConfiguration Creating();
+ IDbIntegrationConfiguration Updating();
+ IDbIntegrationConfiguration Validating();
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IFluentSessionFactoryConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IFluentSessionFactoryConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IFluentSessionFactoryConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,36 @@
+using NHibernate.Hql;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IFluentSessionFactoryConfiguration
+ {
+ /// <summary>
+ /// Set the SessionFactory mnemonic name.
+ /// </summary>
+ /// <param name="sessionFactoryName">The mnemonic name.</param>
+ /// <returns>The fluent configuration itself.</returns>
+ /// <remarks>
+ /// The SessionFactory mnemonic name can be used as a surrogate key in a multi-DB application.
+ /// </remarks>
+ IFluentSessionFactoryConfiguration Named(string sessionFactoryName);
+
+ /// <summary>
+ /// DataBase integration configuration.
+ /// </summary>
+ IDbIntegrationConfiguration Integrate { get; }
+
+ /// <summary>
+ /// Cache configuration.
+ /// </summary>
+ ICacheConfiguration Caching { get; }
+
+ IFluentSessionFactoryConfiguration GenerateStatistics();
+ IFluentSessionFactoryConfiguration Using(EntityMode entityMode);
+ IFluentSessionFactoryConfiguration ParsingHqlThrough<TQueryTranslator>() where TQueryTranslator : IQueryTranslatorFactory;
+
+ IProxyConfiguration Proxy { get; }
+
+ ICollectionFactoryConfiguration GeneratingCollections { get; }
+
+ IMappingsConfiguration Mapping { get; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IMappingsConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IMappingsConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IMappingsConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,8 @@
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IMappingsConfiguration
+ {
+ IMappingsConfiguration UsingDefaultSchema(string defaultSchemaName);
+ IMappingsConfiguration UsingDefaultCatalog(string defaultCatalogName);
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IProxyConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IProxyConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IProxyConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,9 @@
+using NHibernate.Bytecode;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IProxyConfiguration
+ {
+ IProxyConfiguration DisableValidation();
+ IFluentSessionFactoryConfiguration Trough<TProxyFactoryFactory>() where TProxyFactoryFactory : IProxyFactoryFactory;
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IQueryCacheConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IQueryCacheConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/IQueryCacheConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,9 @@
+using NHibernate.Cache;
+
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface IQueryCacheConfiguration
+ {
+ ICacheConfiguration Trough<TFactory>() where TFactory : IQueryCache;
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ITransactionConfiguration.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ITransactionConfiguration.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/Loquacious/ITransactionConfiguration.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,8 @@
+using NHibernate.Transaction;
+namespace NHibernate.Cfg.Loquacious
+{
+ public interface ITransactionConfiguration
+ {
+ IDbIntegrationConfiguration Trough<TFactory>() where TFactory : ITransactionFactory;
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-06-24 20:48:32 UTC (rev 4527)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-06-25 03:50:31 UTC (rev 4528)
@@ -459,6 +459,18 @@
<Compile Include="Bytecode\ProxyFactoryFactoryNotConfiguredException.cs" />
<Compile Include="Bytecode\UnableToLoadProxyFactoryFactoryException.cs" />
<Compile Include="Cache\FakeCache.cs" />
+ <Compile Include="Cfg\Loquacious\IBatcherConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\ICacheConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\ICollectionFactoryConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\ICommandsConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IConnectionConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IDbIntegrationConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IDbSchemaIntegrationConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IFluentSessionFactoryConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IMappingsConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IProxyConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\IQueryCacheConfiguration.cs" />
+ <Compile Include="Cfg\Loquacious\ITransactionConfiguration.cs" />
<Compile Include="Cfg\SessionFactoryConfigurationBase.cs" />
<Compile Include="Cfg\ISessionFactoryConfiguration.cs" />
<Compile Include="Cfg\MappingSchema\AbstractDecoratable.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs 2009-06-25 03:50:31 UTC (rev 4528)
@@ -0,0 +1,74 @@
+using System.Data;
+using NHibernate.AdoNet;
+using NHibernate.ByteCode.LinFu;
+using NHibernate.Cache;
+using NHibernate.Cfg.Loquacious;
+using NHibernate.Dialect;
+using NHibernate.Driver;
+using NHibernate.Exceptions;
+using NHibernate.Hql.Classic;
+using NHibernate.Type;
+
+namespace NHibernate.Test.CfgTest.Loquacious
+{
+ public class ConfigurationFixture
+ {
+ public void ProofOfConcept()
+ {
+ // Here I'm configuring near all properties outside the scope of Configuration class
+ // Using the Configuration class the user can add mappings and configure listeners
+ IFluentSessionFactoryConfiguration sfc= null;
+ sfc.Named("SomeName")
+ .Integrate
+ .Using<MsSql2000Dialect>()
+ .AutoQuoteKeywords()
+ .BatchingQueries
+ .Trough<SqlClientBatchingBatcherFactory>()
+ .Each(10)
+ .Connected
+ .Trough<DebugConnectionProvider>()
+ .Through<SqlClientDriver>()
+ .Releasing(ConnectionReleaseMode.AfterTransaction)
+ .With(IsolationLevel.ReadCommitted)
+ .Using("The connection string but it has some overload")
+ .CreateCommands
+ .AutoCommentingSql()
+ .ConvertingExpetionsTrough<SQLStateConverter>()
+ .Preparing()
+ .WithTimeout(10)
+ .WithMaximumDepthOfOuterJoinFetching(10)
+ .WithHqlToSqlSubstitutions("true 1, false 0, yes 'Y', no 'N'")
+ .Schema
+ .Validating()
+ ;
+ sfc.Caching
+ .Trough<HashtableCacheProvider>()
+ .PrefixingRegionsWith("xyz")
+ .Queries
+ .Trough<StandardQueryCache>()
+ .UsingMinimalPuts()
+ .WithDefaultExpiration(15)
+ .GeneratingCollections
+ .Trough<DefaultCollectionTypeFactory>()
+ .Proxy
+ .DisableValidation()
+ .Trough<ProxyFactoryFactory>()
+ .ParsingHqlThrough<ClassicQueryTranslatorFactory>()
+ .Mapping
+ .UsingDefaultCatalog("MyCatalog")
+ .UsingDefaultSchema("MySche")
+ ;
+ }
+
+ public void ProofOfConceptMinimalConfiguration()
+ {
+ // This is a possible minimal configuration
+ // in this case we must define best default properties for each dialect
+ // The place where put default properties values is the Dialect itself.
+ IFluentSessionFactoryConfiguration sfc = null;
+ sfc
+ .Proxy.Trough<ProxyFactoryFactory>()
+ .Integrate.Using<MsSql2005Dialect>();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-24 20:48:32 UTC (rev 4527)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-25 03:50:31 UTC (rev 4528)
@@ -107,6 +107,7 @@
<Compile Include="CfgTest\HbmBinderFixture.cs" />
<Compile Include="CfgTest\HbmOrderingFixture.cs" />
<Compile Include="CfgTest\LocatedInTestAssembly.cs" />
+ <Compile Include="CfgTest\Loquacious\ConfigurationFixture.cs" />
<Compile Include="CfgTest\MappingDocumentAggregatorTests.cs" />
<Compile Include="CfgTest\MappingDocumentParserTests.cs" />
<Compile Include="CfgTest\SettingsFactoryFixture.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|