|
3 | 3 | using Common.Logging.NLog; |
4 | 4 | using IntegrationEngine.Api; |
5 | 5 | using IntegrationEngine.Core.Configuration; |
| 6 | +using IntegrationEngine.Core.Elasticsearch; |
| 7 | +using IntegrationEngine.Core.IntegrationPoint; |
6 | 8 | using IntegrationEngine.Core.Jobs; |
7 | 9 | using IntegrationEngine.Core.Mail; |
8 | 10 | using IntegrationEngine.Core.MessageQueue; |
@@ -110,7 +112,7 @@ public void RegisterIntegrationPoints() |
110 | 112 | config.IntegrationPointName |
111 | 113 | ) |
112 | 114 | ); |
113 | | - Container.RegisterType<IElasticClient, ElasticClient>(config.IntegrationPointName, |
| 115 | + Container.RegisterType<IElasticClient, ElasticClientAdapter>(config.IntegrationPointName, |
114 | 116 | new InjectionFactory(elasticClientFactory)); |
115 | 117 | } |
116 | 118 | foreach (var config in EngineConfiguration.IntegrationPoints.RabbitMQ) { |
@@ -138,12 +140,12 @@ public void RegisterIntegrationJobs() |
138 | 140 | { |
139 | 141 | var parameterType = parameterInfo.ParameterType; // The type of integration point (e.g. IElasticClient) |
140 | 142 | var parameterName = parameterInfo.ParameterType.Name; // The name of the configuration endpoint (e.g. "MyElasticClient") |
141 | | - if (typeof(IMailClient).IsAssignableFrom(parameterType)) |
142 | | - resolvedParameters.Add(Activator.CreateInstance(parameterType, Container.Resolve<IMailConfiguration>(parameterName))); |
143 | | - if (typeof(IRabbitMQClient).IsAssignableFrom(parameterType)) |
144 | | - resolvedParameters.Add(Activator.CreateInstance(parameterType, Container.Resolve<IRabbitMQConfiguration>(parameterName))); |
145 | | - if (typeof(IElasticClient).IsAssignableFrom(parameterType)) |
146 | | - resolvedParameters.Add(Activator.CreateInstance(parameterType, Container.Resolve<IElasticsearchConfiguration>(parameterName))); |
| 143 | + // If the parameter implements IIntegrationPoint, resolve it's configuration type from the container. |
| 144 | + if (typeof(IIntegrationPoint).IsAssignableFrom(parameterType)) |
| 145 | + { |
| 146 | + var configType = parameterType.GetInterface(typeof(IIntegrationPoint<IIntegrationPointConfiguration>).Name).GetGenericArguments().Single(); ; |
| 147 | + resolvedParameters.Add(Activator.CreateInstance(parameterType, Container.Resolve(configType, parameterName))); |
| 148 | + } |
147 | 149 | } |
148 | 150 | return resolvedParameters.Cast<object>().ToArray(); |
149 | 151 | }; |
|
0 commit comments