Line data Source code
1 : using System.Linq;
2 : using Cqrs.Bus;
3 : using Cqrs.Events;
4 : using Ninject;
5 : using Ninject.Modules;
6 :
7 : namespace Cqrs.Ninject.InProcess.EventBus.Configuration
8 : {
9 : /// <summary>
10 : /// The <see cref="INinjectModule"/> for use with the Cqrs package.
11 : /// </summary>
12 : public class InProcessEventBusModule<TAuthenticationToken> : NinjectModule
13 1 : {
14 : #region Overrides of NinjectModule
15 :
16 : /// <summary>
17 : /// Loads the module into the kernel.
18 : /// </summary>
19 1 : public override void Load()
20 : {
21 : RegisterFactories();
22 : RegisterServices();
23 : RegisterCqrsRequirements();
24 : }
25 :
26 : #endregion
27 :
28 : /// <summary>
29 : /// Register the all factories
30 : /// </summary>
31 1 : public virtual void RegisterFactories()
32 : {
33 : }
34 :
35 : /// <summary>
36 : /// Register the all services
37 : /// </summary>
38 1 : public virtual void RegisterServices()
39 : {
40 : }
41 :
42 : /// <summary>
43 : /// Register the all Cqrs command handlers
44 : /// </summary>
45 1 : public virtual void RegisterCqrsRequirements()
46 : {
47 : bool isInProcessBusBound = Kernel.GetBindings(typeof (InProcessBus<TAuthenticationToken>)).Any();
48 : InProcessBus<TAuthenticationToken> inProcessBus;
49 : if (!isInProcessBusBound)
50 : {
51 : inProcessBus = Kernel.Get<InProcessBus<TAuthenticationToken>>();
52 : Bind<InProcessBus<TAuthenticationToken>>()
53 : .ToConstant(inProcessBus)
54 : .InSingletonScope();
55 : }
56 : else
57 : inProcessBus = Kernel.Get<InProcessBus<TAuthenticationToken>>();
58 :
59 : Bind<IEventPublisher<TAuthenticationToken>>()
60 : .ToConstant(inProcessBus)
61 : .InSingletonScope();
62 :
63 : Bind<IEventReceiver<TAuthenticationToken>>()
64 : .ToConstant(inProcessBus)
65 : .InSingletonScope();
66 :
67 : bool isHandlerRegistrationBound = Kernel.GetBindings(typeof(IEventHandlerRegistrar)).Any();
68 : if (!isHandlerRegistrationBound)
69 : {
70 : Bind<IEventHandlerRegistrar>()
71 : .ToConstant(inProcessBus)
72 : .InSingletonScope();
73 : }
74 : }
75 : }
76 : }
|