@@ -38,28 +38,17 @@ public void Configure(IList<Assembly> assembliesWithJobs)
3838 . Where ( x => typeof ( IIntegrationJob ) . IsAssignableFrom ( x ) && x . IsClass )
3939 . ToList ( ) ;
4040 LoadConfiguration ( ) ;
41- SetupLogging ( ) ;
42- TryAndLogFailure ( "Setup Database Repository" , SetupDatabaseRepository ) ;
43- TryAndLogFailure ( "Setup Mail Client" , SetupMailClient ) ;
44- TryAndLogFailure ( "Setup Elastic Client" , SetupElasticClientAndRepository ) ;
45- TryAndLogFailure ( "Setup RScript Runner" , SetupRScriptRunner ) ;
46- TryAndLogFailure ( "Setup Message Queue Client" , SetupMessageQueueClient ) ;
47- TryAndLogFailure ( "Setup Scheduler" , SetupEngineScheduler ) ;
48- TryAndLogFailure ( "Setup Web Api" , SetupWebApi ) ;
49- TryAndLogFailure ( "Setup Message Queue Listener" , SetupMessageQueueListener ) ;
50- }
51-
52- static void TryAndLogFailure ( string description , Action action )
53- {
54- try
55- {
56- action ( ) ;
57- }
58- catch ( Exception exception )
59- {
60- var log = Common . Logging . LogManager . GetLogger ( typeof ( EngineHost ) ) ;
61- log . Error ( description , exception ) ;
62- }
41+ var log = SetupLogging ( ) ;
42+ var dbContext = SetupDatabaseContext ( ) ;
43+ SetupRScriptRunner ( ) ;
44+ SetupDatabaseRepository ( dbContext ) ;
45+ var mailClient = SetupMailClient ( log ) ;
46+ var elasticClient = SetupElasticClient ( ) ;
47+ var elasticsearchRepository = SetupElasticsearchRepository ( log , elasticClient ) ;
48+ var messageQueueClient = SetupMessageQueueClient ( log ) ;
49+ SetupEngineScheduler ( log , messageQueueClient , elasticsearchRepository ) ;
50+ SetupMessageQueueListener ( log , mailClient , elasticClient , dbContext ) ;
51+ SetupWebApi ( ) ;
6352 }
6453
6554 public void LoadConfiguration ( )
@@ -68,7 +57,7 @@ public void LoadConfiguration()
6857 Container . RegisterInstance < EngineConfiguration > ( Configuration ) ;
6958 }
7059
71- public void SetupLogging ( )
60+ public ILog SetupLogging ( )
7261 {
7362 var config = Configuration . NLogAdapter ;
7463 var properties = new NameValueCollection ( ) ;
@@ -77,13 +66,19 @@ public void SetupLogging()
7766 Common . Logging . LogManager . Adapter = new NLogLoggerFactoryAdapter ( properties ) ;
7867 var log = LogManager . GetLogger ( MethodBase . GetCurrentMethod ( ) . DeclaringType ) ;
7968 Container . RegisterInstance < ILog > ( log ) ;
69+ return log ;
70+ }
71+
72+ public IntegrationEngineContext SetupDatabaseContext ( )
73+ {
74+ var integrationEngineContext = new DatabaseInitializer ( Configuration . Database ) . GetDbContext ( ) ;
75+ Container . RegisterInstance < IntegrationEngineContext > ( integrationEngineContext ) ;
76+ return integrationEngineContext ;
8077 }
8178
82- public void SetupDatabaseRepository ( )
79+ public void SetupDatabaseRepository ( IntegrationEngineContext integrationEngineContext )
8380 {
84- var dbContext = new DatabaseInitializer ( Configuration . Database ) . GetDbContext ( ) ;
85- Container . RegisterInstance < IntegrationEngineContext > ( dbContext ) ;
86- Container . RegisterInstance < IDatabaseRepository > ( new DatabaseRepository ( dbContext ) ) ;
81+ Container . RegisterInstance < IDatabaseRepository > ( new DatabaseRepository ( integrationEngineContext ) ) ;
8782 }
8883
8984 public void SetupWebApi ( )
@@ -92,57 +87,54 @@ public void SetupWebApi()
9287 IntegrationEngineApi . Start ( ( new UriBuilder ( "http" , config . HostName , config . Port ) ) . Uri . AbsoluteUri ) ;
9388 }
9489
95- public void SetupMailClient ( )
90+ public IMailClient SetupMailClient ( ILog log )
9691 {
97- var log = Container . Resolve < ILog > ( ) ;
98-
9992 var mailClient = new MailClient ( ) {
10093 MailConfiguration = Configuration . Mail ,
10194 Log = log ,
10295 } ;
10396 Container . RegisterInstance < IMailClient > ( mailClient ) ;
97+ return mailClient ;
10498 }
10599
106- public void SetupMessageQueueListener ( )
100+ public void SetupMessageQueueListener ( ILog log , IMailClient mailClient , IElasticClient elasticClient , IntegrationEngineContext integrationEngineContext )
107101 {
108102 var rabbitMqListener = new RabbitMQListener ( ) {
109103 IntegrationJobTypes = IntegrationJobTypes ,
110104 MessageQueueConnection = new MessageQueueConnection ( Configuration . MessageQueue ) ,
111105 MessageQueueConfiguration = Configuration . MessageQueue ,
112- Log = Container . Resolve < ILog > ( ) ,
113- MailClient = Container . Resolve < IMailClient > ( ) ,
114- IntegrationEngineContext = Container . Resolve < IntegrationEngineContext > ( ) ,
115- ElasticClient = Container . Resolve < IElasticClient > ( ) ,
106+ Log = log ,
107+ MailClient = mailClient ,
108+ IntegrationEngineContext = integrationEngineContext ,
109+ ElasticClient = elasticClient ,
116110 } ;
117111 Container . RegisterInstance < IMessageQueueListener > ( rabbitMqListener ) ;
118112 rabbitMqListener . Listen ( ) ;
119113 }
120114
121- public void SetupMessageQueueClient ( )
115+ public IMessageQueueClient SetupMessageQueueClient ( ILog log )
122116 {
123117 var messageQueueClient = new RabbitMQClient ( ) {
124118 MessageQueueConnection = new MessageQueueConnection ( Configuration . MessageQueue ) ,
125119 MessageQueueConfiguration = Configuration . MessageQueue ,
126- Log = Container . Resolve < ILog > ( ) ,
120+ Log = log ,
127121 } ;
128122 Container . RegisterInstance < IMessageQueueClient > ( messageQueueClient ) ;
123+ return messageQueueClient ;
129124 }
130125
131- public void SetupEngineScheduler ( )
126+ public void SetupEngineScheduler ( ILog log , IMessageQueueClient messageQueueClient , IElasticsearchRepository elasticsearchRepository )
132127 {
133- var log = Container . Resolve < ILog > ( ) ;
134128 var engineScheduler = new EngineScheduler ( ) {
135129 Scheduler = StdSchedulerFactory . GetDefaultScheduler ( ) ,
136130 IntegrationJobTypes = IntegrationJobTypes ,
137- MessageQueueClient = Container . Resolve < IMessageQueueClient > ( ) ,
131+ MessageQueueClient = messageQueueClient ,
138132 Log = log ,
139133 } ;
140134 Container . RegisterInstance < IEngineScheduler > ( engineScheduler ) ;
141135 engineScheduler . Start ( ) ;
142-
143- var elasticRepo = Container . Resolve < IElasticsearchRepository > ( ) ;
144- var simpleTriggers = elasticRepo . SelectAll < SimpleTrigger > ( ) ;
145- var allCronTriggers = elasticRepo . SelectAll < CronTrigger > ( ) ;
136+ var simpleTriggers = elasticsearchRepository . SelectAll < SimpleTrigger > ( ) ;
137+ var allCronTriggers = elasticsearchRepository . SelectAll < CronTrigger > ( ) ;
146138 var cronTriggers = allCronTriggers . Where ( x => ! string . IsNullOrWhiteSpace ( x . CronExpressionString ) ) ;
147139 foreach ( var trigger in simpleTriggers )
148140 engineScheduler . ScheduleJobWithTrigger ( trigger ) ;
@@ -157,21 +149,26 @@ public void SetupRScriptRunner()
157149 Container . RegisterInstance < RScriptRunner > ( new RScriptRunner ( ) ) ;
158150 }
159151
160- public void SetupElasticClientAndRepository ( )
152+ public IElasticClient SetupElasticClient ( )
161153 {
162154 var config = Configuration . Elasticsearch ;
163155 var serverUri = new UriBuilder ( config . Protocol , config . HostName , config . Port ) . Uri ;
164156 var settings = new ConnectionSettings ( serverUri , config . DefaultIndex ) ;
165157 var elasticClient = new ElasticClient ( settings ) ;
166- var log = Container . Resolve < ILog > ( ) ;
167158 Container . RegisterInstance < IElasticClient > ( elasticClient ) ;
168- var elasticRepo = new ElasticsearchRepository ( ) {
169- ElasticClient = elasticClient ,
159+ return elasticClient ;
160+ }
161+
162+ public IElasticsearchRepository SetupElasticsearchRepository ( ILog log , IElasticClient elasticClient )
163+ {
164+ var elasticsearchRepository = new ElasticsearchRepository ( ) {
170165 Log = log ,
166+ ElasticClient = elasticClient ,
171167 } ;
172- if ( ! elasticRepo . IsServerAvailable ( ) )
168+ if ( ! elasticsearchRepository . IsServerAvailable ( ) )
173169 log . Warn ( "Elasticsearch server does not appear to be available." ) ;
174- Container . RegisterInstance < IElasticsearchRepository > ( elasticRepo ) ;
170+ Container . RegisterInstance < IElasticsearchRepository > ( elasticsearchRepository ) ;
171+ return elasticsearchRepository ;
175172 }
176173
177174 public void Dispose ( )
0 commit comments