LCOV - code coverage report
Current view: top level - Ninject/Cqrs.Ninject/Configuration - CqrsModule.cs Hit Total Coverage
Test: doc-coverage.info Lines: 11 13 84.6 %
Date: 2017-07-26

          Line data    Source code
       1             : using System;
       2             : using System.Linq;
       3             : using cdmdotnet.AutoMapper;
       4             : using Cqrs.Authentication;
       5             : using Cqrs.Bus;
       6             : using Cqrs.Domain;
       7             : using Cqrs.Domain.Factories;
       8             : using cdmdotnet.Logging;
       9             : using cdmdotnet.Logging.Configuration;
      10             : using cdmdotnet.StateManagement;
      11             : using cdmdotnet.StateManagement.Threaded;
      12             : using cdmdotnet.StateManagement.Web;
      13             : using Cqrs.Repositories.Queries;
      14             : using Ninject.Modules;
      15             : using Ninject.Parameters;
      16             : 
      17             : namespace Cqrs.Ninject.Configuration
      18             : {
      19             :         /// <summary>
      20             :         /// The <see cref="INinjectModule"/> for use with the Cqrs package.
      21             :         /// </summary>
      22             :         public class CqrsModule<TAuthenticationToken, TAuthenticationTokenHelper> : NinjectModule
      23             :                 where TAuthenticationTokenHelper : class, IAuthenticationTokenHelper<TAuthenticationToken>
      24           1 :         {
      25             :                 protected bool SetupForWeb { get; private set; }
      26             : 
      27             :                 protected bool SetupForSqlLogging { get; private set; }
      28             : 
      29             :                 /// <param name="setupForWeb">Set this to true if you will host this in IIS or some other web-server that provides access to System.Web.HttpContext.Current</param>
      30             :                 /// <param name="setupForSqlLogging">Set this to true to use <see cref="SqlLogger"/> otherwise the <see cref="ConsoleLogger"/> will be bootstrapped by default.</param>
      31           1 :                 public CqrsModule(bool setupForWeb, bool setupForSqlLogging)
      32             :                 {
      33             :                         SetupForWeb = setupForWeb;
      34             :                         SetupForSqlLogging = setupForSqlLogging;
      35             :                 }
      36             : 
      37             :                 #region Overrides of NinjectModule
      38             : 
      39             :                 /// <summary>
      40             :                 /// Loads the module into the kernel.
      41             :                 /// </summary>
      42           1 :                 public override void Load()
      43             :                 {
      44             :                         RegisterFactories();
      45             :                         RegisterRepositories();
      46             :                         RegisterQueryBuilders();
      47             :                         RegisterServices();
      48             :                         RegisterCqrsRequirements();
      49             :                         RegisterAutomapperComponents();
      50             :                         RegisterLoggerComponents();
      51             :                         RegisterCaching();
      52             :                 }
      53             : 
      54             :                 #endregion
      55             : 
      56             :                 /// <summary>
      57             :                 /// Register the all factories
      58             :                 /// </summary>
      59           1 :                 public virtual void RegisterFactories()
      60             :                 {
      61             :                         Bind<IQueryFactory>()
      62             :                                 .To<QueryFactory>()
      63             :                                 .InSingletonScope();
      64             :                 }
      65             : 
      66             :                 /// <summary>
      67             :                 /// Register the all components for the <see cref="ILogger"/>
      68             :                 /// </summary>
      69           1 :                 public virtual void RegisterLoggerComponents()
      70             :                 {
      71             :                         bool isCorrelationIdHelperBound = Kernel.GetBindings(typeof(ICorrelationIdHelper)).Any();
      72             :                         if (!isCorrelationIdHelperBound)
      73             :                         {
      74             :                                 if (SetupForWeb)
      75             :                                         Bind<ICorrelationIdHelper>()
      76             :                                                 .To<WebCorrelationIdHelper>()
      77             :                                                 .InSingletonScope();
      78             :                                 else
      79             :                                         Bind<ICorrelationIdHelper>()
      80             :                                                 .To<CorrelationIdHelper>()
      81             :                                                 .InSingletonScope();
      82             :                         }
      83             : 
      84             :                         bool isLoggerBound = Kernel.GetBindings(typeof(ILogger)).Any();
      85             :                         if (!isLoggerBound)
      86             :                         {
      87             :                                 if (SetupForSqlLogging)
      88             :                                         Bind<ILogger>()
      89             :                                                 .To<SqlLogger>()
      90             :                                                 .InSingletonScope();
      91             :                                 else
      92             :                                         Bind<ILogger>()
      93             :                                                 .To<ConsoleLogger>()
      94             :                                                 .InSingletonScope();
      95             :                         }
      96             : 
      97             :                         bool isLoggerSettingsBound = Kernel.GetBindings(typeof(ILoggerSettings)).Any();
      98             :                         if (!isLoggerSettingsBound)
      99             :                         {
     100             :                                 Bind<ILoggerSettings>()
     101             :                                         .To<LoggerSettings>()
     102             :                                         .InSingletonScope();
     103             :                         }
     104             : 
     105             :                         Bind<ITelemetryHelper>()
     106             :                                 .To<NullTelemetryHelper>()
     107             :                                 .InSingletonScope();
     108             :                 }
     109             : 
     110             :                 /// <summary>
     111             :                 /// Register the all <see cref="IAutomapHelper"/>
     112             :                 /// </summary>
     113           1 :                 public virtual void RegisterAutomapperComponents()
     114             :                 {
     115             :                         Bind<IAutomapHelper>()
     116             :                                 .To<AutomapHelper>()
     117             :                                 .InSingletonScope();
     118             :                 }
     119             : 
     120             :                 /// <summary>
     121             :                 /// Register the all repositories
     122             :                 /// </summary>
     123           1 :                 public virtual void RegisterRepositories()
     124             :                 {
     125             :                 }
     126             : 
     127             :                 /// <summary>
     128             :                 /// Register the all query builders
     129             :                 /// </summary>
     130           1 :                 public virtual void RegisterQueryBuilders()
     131             :                 {
     132             :                 }
     133             : 
     134             :                 /// <summary>
     135             :                 /// Register the all services
     136             :                 /// </summary>
     137           1 :                 public virtual void RegisterServices()
     138             :                 {
     139             :                 }
     140             : 
     141             :                 /// <summary>
     142             :                 /// Register the all caching stuffs
     143             :                 /// </summary>
     144           1 :                 public virtual void RegisterCaching()
     145             :                 {
     146             :                         if (Kernel.GetBindings(typeof (IContextItemCollectionFactory)).Any())
     147             :                                 Kernel.Unbind<IContextItemCollectionFactory>();
     148             :                         if (Kernel.GetBindings(typeof(IContextItemCollection)).Any())
     149             :                                 Kernel.Unbind<IContextItemCollection>();
     150             :                         if (SetupForWeb)
     151             :                         {
     152             :                                 Bind<IContextItemCollectionFactory>()
     153             :                                         .To<WebContextItemCollectionFactory>()
     154             :                                         .InSingletonScope();
     155             :                                 Bind<IContextItemCollection>()
     156             :                                         .To<WebContextItemCollection>()
     157             :                                         .InSingletonScope();
     158             :                         }
     159             :                         else
     160             :                         {
     161             :                                 Bind<IContextItemCollectionFactory>()
     162             :                                         .To<ThreadedContextItemCollectionFactory>()
     163             :                                         .InSingletonScope();
     164             :                                 Bind<IContextItemCollection>()
     165             :                                         .To<ThreadedContextItemCollection>()
     166             :                                         .InSingletonScope();
     167             :                         }
     168             :                 }
     169             : 
     170             :                 /// <summary>
     171             :                 /// Register the all Cqrs requirements
     172             :                 /// </summary>
     173           1 :                 public virtual void RegisterCqrsRequirements()
     174             :                 {
     175             :                         Bind<IUnitOfWork<TAuthenticationToken>>()
     176             :                                 .To<UnitOfWork<TAuthenticationToken>>()
     177             :                                 .InTransientScope();
     178             :                         Bind<ISagaUnitOfWork<TAuthenticationToken>>()
     179             :                                 .To<SagaUnitOfWork<TAuthenticationToken>>()
     180             :                                 .InTransientScope();
     181             :                         Bind<IAggregateRepository<TAuthenticationToken>>()
     182             :                                 .To<AggregateRepository<TAuthenticationToken>>()
     183             :                                 .InSingletonScope();
     184             :                         Bind<IRepository<TAuthenticationToken>>()
     185             :                                 .To<Repository<TAuthenticationToken>>()
     186             :                                 .InSingletonScope();
     187             :                         Bind<ISagaRepository<TAuthenticationToken>>()
     188             :                                 .To<SagaRepository<TAuthenticationToken>>()
     189             :                                 .InSingletonScope();
     190             :                         Bind<IAggregateFactory>()
     191             :                                 .To<AggregateFactory>()
     192             :                                 .InSingletonScope();
     193             : 
     194             :                         Bind<IAuthenticationTokenHelper<TAuthenticationToken>>()
     195             :                                 .To<TAuthenticationTokenHelper>()
     196             :                                 .InSingletonScope();
     197             : 
     198             :                         Bind<IStoreLastEventProcessed>()
     199             :                                 .To<FileBasedLastEventProcessedStore>()
     200             :                                 .InSingletonScope();
     201             : 
     202             :                         Bind<IBusHelper>()
     203             :                                 .To<BusHelper>()
     204             :                                 .InSingletonScope();
     205             :                 }
     206             : 
     207           0 :                 protected T Resolve<T>()
     208             :                 {
     209             :                         return (T)Resolve(typeof(T));
     210             :                 }
     211             : 
     212           0 :                 protected object Resolve(Type serviceType)
     213             :                 {
     214             :                         return Kernel.Resolve(Kernel.CreateRequest(serviceType, null, new Parameter[0], true, true)).SingleOrDefault();
     215             :                 }
     216             :         }
     217             : }

Generated by: LCOV version 1.10