Line data Source code
1 : using System.Linq;
2 : using Cqrs.Bus;
3 : using Cqrs.Commands;
4 : using Ninject;
5 : using Ninject.Modules;
6 :
7 : namespace Cqrs.Ninject.InProcess.CommandBus.Configuration
8 : {
9 : /// <summary>
10 : /// The <see cref="INinjectModule"/> for use with the Cqrs package.
11 : /// </summary>
12 : public class InProcessCommandBusModule<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<ICommandSender<TAuthenticationToken>>()
60 : .ToConstant(inProcessBus)
61 : .InSingletonScope();
62 :
63 : Bind<ICommandPublisher<TAuthenticationToken>>()
64 : .ToConstant(inProcessBus)
65 : .InSingletonScope();
66 :
67 : Bind<ICommandReceiver<TAuthenticationToken>>()
68 : .ToConstant(inProcessBus)
69 : .InSingletonScope();
70 :
71 : bool isHandlerRegistrationBound = Kernel.GetBindings(typeof(ICommandHandlerRegistrar)).Any();
72 : if (!isHandlerRegistrationBound)
73 : {
74 : Bind<ICommandHandlerRegistrar>()
75 : .ToConstant(inProcessBus)
76 : .InSingletonScope();
77 : }
78 : }
79 : }
80 : }
|