Skip to content

Commit 4f9d6d7

Browse files
committed
Revert incorrect commit 5668aa1
1 parent 5668aa1 commit 4f9d6d7

21 files changed

+341
-416
lines changed

GitVersion.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
mode: ContinuousDelivery
2+
next-version: 1.0.0
3+
branches: {}
4+
ignore:
5+
sha: []

Src/Xer.Cqrs.Extensions.Autofac/ContainerBuilderExtensions.cs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Reflection;
1+
using System.Reflection;
32
using Xer.Cqrs.Extensions.Autofac;
43

54
namespace Autofac
@@ -8,21 +7,6 @@ public static class ContainerBuilderExtensions
87
{
98
public static ContainerBuilder RegisterCqrs(this ContainerBuilder builder, params Assembly[] assemblies)
109
{
11-
if (builder == null)
12-
{
13-
throw new ArgumentNullException(nameof(builder));
14-
}
15-
16-
if (assemblies == null)
17-
{
18-
throw new ArgumentNullException(nameof(assemblies));
19-
}
20-
21-
if (assemblies.Length == 0)
22-
{
23-
throw new ArgumentException("No assemblies were provided.", nameof(assemblies));
24-
}
25-
2610
builder.RegisterCqrsCore()
2711
.RegisterEventHandlers(select =>
2812
select.ByInterface(assemblies)
@@ -36,11 +20,6 @@ public static ContainerBuilder RegisterCqrs(this ContainerBuilder builder, param
3620

3721
public static ICqrsBuilder RegisterCqrsCore(this ContainerBuilder builder)
3822
{
39-
if (builder == null)
40-
{
41-
throw new ArgumentNullException(nameof(builder));
42-
}
43-
4423
return new CqrsBuilder(builder);
4524
}
4625
}

Src/Xer.Cqrs.Extensions.Autofac/CqrsBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public ICqrsBuilder RegisterCommandHandlers(Action<ICqrsCommandHandlerSelector>
4646
: new CommandDelegator(handlers[0]);
4747
}
4848

49-
return new CommandDelegator(NullMessageHandlerDelegateResolver.Instance);
49+
return new CommandDelegator(new SingleMessageHandlerRegistration().BuildMessageHandlerResolver());
5050
}).As<CommandDelegator>().SingleInstance();
5151

5252
return this;
@@ -73,7 +73,7 @@ public ICqrsBuilder RegisterEventHandlers(Action<ICqrsEventHandlerSelector> sele
7373
: new EventDelegator(handlers[0]);
7474
}
7575

76-
return new EventDelegator(NullMessageHandlerDelegateResolver.Instance);
76+
return new EventDelegator(new MultiMessageHandlerRegistration().BuildMessageHandlerResolver());
7777
}).As<EventDelegator>().SingleInstance();
7878

7979
return this;

Src/Xer.Cqrs.Extensions.Autofac/CqrsCommandHandlerSelector.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,14 @@ public ICqrsCommandHandlerSelector ByInterface(Lifetime lifetime, params Assembl
3434

3535
if (assemblies.Length == 0)
3636
{
37-
throw new ArgumentException("No command handler assemblies were provided.", nameof(assemblies));
37+
throw new ArgumentException("No assemblies were provided.", nameof(assemblies));
3838
}
39-
40-
Assembly[] distinctAssemblies = assemblies.Distinct().ToArray();
4139

42-
var asyncHandlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
40+
var asyncHandlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
4341
.AsClosedTypesOf(typeof(ICommandAsyncHandler<>))
4442
.AsImplementedInterfaces();
4543

46-
var syncHandlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
44+
var syncHandlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
4745
.AsClosedTypesOf(typeof(ICommandHandler<>))
4846
.AsImplementedInterfaces();
4947

@@ -89,12 +87,10 @@ public ICqrsCommandHandlerSelector ByAttribute(Lifetime lifetime, params Assembl
8987

9088
if (assemblies.Length == 0)
9189
{
92-
throw new ArgumentException("No command handler assemblies were provided.", nameof(assemblies));
90+
throw new ArgumentException("No assemblies were provided.", nameof(assemblies));
9391
}
94-
95-
Assembly[] distinctAssemblies = assemblies.Distinct().ToArray();
9692

97-
var handlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
93+
var handlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
9894
.Where(type => type.IsClass && !type.IsAbstract &&
9995
CommandHandlerAttributeMethod.IsFoundInType(type))
10096
.AsSelf();
@@ -117,7 +113,7 @@ public ICqrsCommandHandlerSelector ByAttribute(Lifetime lifetime, params Assembl
117113
_builder.Register(context =>
118114
{
119115
SingleMessageHandlerRegistration singleMessageHandlerRegistration = new SingleMessageHandlerRegistration();
120-
singleMessageHandlerRegistration.RegisterCommandHandlersByAttribute(distinctAssemblies, context.Resolve);
116+
singleMessageHandlerRegistration.RegisterCommandHandlersByAttribute(assemblies, context.Resolve);
121117
return new CommandHandlerDelegateResolver(singleMessageHandlerRegistration.BuildMessageHandlerResolver());
122118
}).AsSelf().SingleInstance();
123119

Src/Xer.Cqrs.Extensions.Autofac/CqrsEventHandlerSelector.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Autofac;
22
using System;
3-
using System.Collections.Generic;
43
using System.Linq;
54
using System.Reflection;
65
using Xer.Cqrs.EventStack;
@@ -35,16 +34,14 @@ public ICqrsEventHandlerSelector ByInterface(Lifetime lifetime, params Assembly[
3534

3635
if (assemblies.Length == 0)
3736
{
38-
throw new ArgumentException("No event handler assemblies were provided.", nameof(assemblies));
37+
throw new ArgumentException("No assemblies were provided.", nameof(assemblies));
3938
}
4039

41-
Assembly[] distinctAssemblies = assemblies.Distinct().ToArray();
42-
43-
var asyncHandlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
40+
var asyncHandlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
4441
.AsClosedTypesOf(typeof(IEventAsyncHandler<>))
4542
.AsImplementedInterfaces();
4643

47-
var syncHandlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
44+
var syncHandlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
4845
.AsClosedTypesOf(typeof(IEventHandler<>))
4946
.AsImplementedInterfaces();
5047

@@ -87,12 +84,10 @@ public ICqrsEventHandlerSelector ByAttribute(Lifetime lifetime, params Assembly[
8784

8885
if (assemblies.Length == 0)
8986
{
90-
throw new ArgumentException("No event handler assemblies were provided.", nameof(assemblies));
87+
throw new ArgumentException("No assemblies were provided.", nameof(assemblies));
9188
}
9289

93-
Assembly[] distinctAssemblies = assemblies.Distinct().ToArray();
94-
95-
var attributeHandlerRegistration = _builder.RegisterAssemblyTypes(distinctAssemblies)
90+
var attributeHandlerRegistration = _builder.RegisterAssemblyTypes(assemblies.ToArray())
9691
.Where(type => type.IsClass && !type.IsAbstract &&
9792
EventHandlerAttributeMethod.IsFoundInType(type))
9893
.AsSelf();
@@ -115,7 +110,7 @@ public ICqrsEventHandlerSelector ByAttribute(Lifetime lifetime, params Assembly[
115110
_builder.Register(context =>
116111
{
117112
var handlerRegistration = new MultiMessageHandlerRegistration();
118-
handlerRegistration.RegisterEventHandlersByAttribute(distinctAssemblies, context.Resolve);
113+
handlerRegistration.RegisterEventHandlersByAttribute(assemblies, context.Resolve);
119114
return new EventHandlerDelegateResolver(handlerRegistration.BuildMessageHandlerResolver());
120115
}).AsSelf().SingleInstance();
121116

Src/Xer.Cqrs.Extensions.Autofac/NullMessageHandlerDelegateResolver.cs

Lines changed: 0 additions & 16 deletions
This file was deleted.

Src/Xer.Cqrs.Extensions.Autofac/Xer.Cqrs.Extensions.Autofac.csproj

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
5-
<Authors>jeyjeyemem;mvput;xerprojects-contributors;</Authors>
6-
<Description>Autofac container integration for Xer.Cqrs</Description>
7-
<Copyright>Copyright (c) XerProjects contributors</Copyright>
8-
<PackageLicenseUrl>https://github.com/XerProjects/Xer.Cqrs.Extensions.Autofac/blob/dev/LICENSE</PackageLicenseUrl>
9-
<PackageProjectUrl>https://github.com/XerProjects/Xer.Cqrs.Extensions.Autofac</PackageProjectUrl>
10-
<PackageTags>container;ioc;ioc-container;cqrs;extension;autofac</PackageTags>
115
</PropertyGroup>
126

137
<ItemGroup>
@@ -17,6 +11,7 @@
1711
<PackageReference Include="Xer.Cqrs.CommandStack.Extensions.Attributes" Version="1.0.0" />
1812
<PackageReference Include="Xer.Cqrs.EventStack" Version="2.0.0" />
1913
<PackageReference Include="Xer.Cqrs.EventStack.Extensions.Attributes" Version="1.0.0" />
14+
<PackageReference Include="Xer.Delegator" Version="1.0.0" />
2015
</ItemGroup>
2116

2217
</Project>
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using Autofac;
2+
using System.Reflection;
3+
using Autofac.Core.Registration;
4+
using Xer.Cqrs.CommandStack;
5+
using Xer.Cqrs.Extensions.Autofac;
6+
using Xunit;
7+
8+
namespace Xer.Xqrs.Extensions.Autofac.Tests
9+
{
10+
public class CommandHandlerTests
11+
{
12+
[Fact]
13+
public void Should_Resolve_CommandDelegator()
14+
{
15+
ContainerBuilder builder = new ContainerBuilder();
16+
builder.RegisterCqrsCore()
17+
.RegisterCommandHandlers(select => select.ByInterface(typeof(TestCommand).Assembly));
18+
19+
var context = builder.Build();
20+
21+
Assert.NotNull(context.Resolve<CommandDelegator>());
22+
}
23+
24+
[Fact]
25+
public void Should_Notresolve_CommandHandlerResolver()
26+
{
27+
ContainerBuilder builder = new ContainerBuilder();
28+
builder.RegisterCqrsCore();
29+
30+
var context = builder.Build();
31+
32+
Assert.Throws<ComponentNotRegisteredException>(() => context.Resolve<CommandHandlerDelegateResolver>());
33+
}
34+
35+
[Fact]
36+
public void Should_Resolve_CommandHandler_ByInterface()
37+
{
38+
ContainerBuilder builder = new ContainerBuilder();
39+
builder.RegisterCqrsCore()
40+
.RegisterCommandHandlers(opt => opt.ByInterface(typeof(TestCommand).Assembly));
41+
42+
var context = builder.Build();
43+
44+
var commandHandler = context.Resolve<ICommandAsyncHandler<TestCommand>>();
45+
46+
Assert.IsType<TestCommandHandlerWithInterface>(commandHandler);
47+
}
48+
49+
[Fact]
50+
public void Should_Resolve_CommandHandler_ByAttribute()
51+
{
52+
ContainerBuilder builder = new ContainerBuilder();
53+
builder.RegisterCqrsCore()
54+
.RegisterCommandHandlers(opt => opt.ByAttribute(typeof(TestCommand).Assembly));
55+
56+
var context = builder.Build();
57+
58+
Assert.NotNull(context.Resolve<TestCommandHandlerWithAttribute>());
59+
}
60+
61+
[Fact]
62+
public void Should_Resolve_Multiple_CommandHandlers_ByAttribute()
63+
{
64+
ContainerBuilder builder = new ContainerBuilder();
65+
builder.RegisterCqrsCore()
66+
.RegisterCommandHandlers(opt => opt.ByAttribute(typeof(TestCommand).Assembly));
67+
68+
var context = builder.Build();
69+
70+
Assert.NotNull(context.Resolve<MultipleCommandHandlerWithAttribute1>());
71+
Assert.NotNull(context.Resolve<MultipleCommandHandlerWithAttribute2>());
72+
}
73+
}
74+
}

0 commit comments

Comments
 (0)