-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathJustSayingRegistry.cs
64 lines (56 loc) · 3.08 KB
/
JustSayingRegistry.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using JustSaying.AwsTools;
using JustSaying.AwsTools.QueueCreation;
using JustSaying.Fluent;
using JustSaying.Messaging.Channels.Receive;
using JustSaying.Messaging.MessageHandling;
using JustSaying.Messaging.MessageSerialization;
using JustSaying.Messaging.Middleware.Logging;
using JustSaying.Messaging.Middleware.PostProcessing;
using JustSaying.Messaging.Monitoring;
using JustSaying.Naming;
using StructureMap;
namespace JustSaying;
/// <summary>
/// A class representing a StructureMap registry for JustSaying services.
/// </summary>
internal sealed class JustSayingRegistry : Registry
{
/// <summary>
/// Initializes a new instance of the <see cref="JustSayingRegistry"/> class.
/// </summary>
public JustSayingRegistry()
{
// Register as self so the same singleton instance implements two different interfaces
For<ContextResolver>().Use((p) => new ContextResolver(p)).Singleton();
For<IHandlerResolver>().Use((p) => p.GetInstance<ContextResolver>()).Singleton();
For<IServiceResolver>().Use((p) => p.GetInstance<ContextResolver>()).Singleton();
For<IAwsClientFactory>().Use<DefaultAwsClientFactory>().Singleton();
For<IAwsClientFactoryProxy>().Use((p) => new AwsClientFactoryProxy(p.GetInstance<IAwsClientFactory>)).Singleton();
For<MessagingConfig>().Use<MessagingConfig>().Singleton();
For<IMessagingConfig>().Use(context => context.GetInstance<MessagingConfig>()).Singleton();
For<IPublishBatchConfiguration>().Use<MessagingConfig>(context => context.GetInstance<MessagingConfig>()).Singleton();
For<IMessageMonitor>().Use<NullOpMessageMonitor>().Singleton();
For<IMessageSerializationFactory>().Use<NewtonsoftSerializationFactory>().Singleton();
For<IMessageSubjectProvider>().Use<GenericMessageSubjectProvider>().Singleton();
For<IVerifyAmazonQueues>().Use<AmazonQueueCreator>().Singleton();
For<MessageContextAccessor>().Use<MessageContextAccessor>().Singleton();
For<IMessageContextAccessor>().Use(context => context.GetInstance<MessageContextAccessor>());
For<IMessageContextReader>().Use(context => context.GetInstance<MessageContextAccessor>());
For<LoggingMiddleware>().AlwaysUnique();
For<SqsPostProcessorMiddleware>().AlwaysUnique();
For<IMessageSerializationRegister>()
.Use(
nameof(IMessageSerializationRegister),
(p) =>
{
var config = p.GetInstance<IMessagingConfig>();
var serializerFactory = p.GetInstance<IMessageSerializationFactory>();
return new MessageSerializationRegister(config.MessageSubjectProvider, serializerFactory);
})
.Singleton();
For<IMessageReceivePauseSignal>().Use<MessageReceivePauseSignal>().Singleton();
For<DefaultNamingConventions>().Singleton();
For<ITopicNamingConvention>().Use(context => context.GetInstance<DefaultNamingConventions>());
For<IQueueNamingConvention>().Use(context => context.GetInstance<DefaultNamingConventions>());
}
}