From 996756487f0774fb1afae86835f8cb1a3bc5b9ab Mon Sep 17 00:00:00 2001 From: Philip Wood Date: Sun, 25 Feb 2018 11:16:22 +0000 Subject: [PATCH] Use new handler registration code in CQRSLite EvelynRouteRegistrar is now obsolete because what it does hs been merged into CQRSLite ;) --- src/Evelyn.Core/Evelyn.Core.csproj | 2 +- src/Evelyn.Core/EvelynRouteRegistrar.cs | 58 ------------------- src/Evelyn.Core/RouteRegistrarBootstrapper.cs | 5 +- src/Evelyn.Host/Evelyn.Host.csproj | 2 +- .../Evelyn.Management.Api.Rest.csproj | 2 +- 5 files changed, 6 insertions(+), 63 deletions(-) delete mode 100644 src/Evelyn.Core/EvelynRouteRegistrar.cs diff --git a/src/Evelyn.Core/Evelyn.Core.csproj b/src/Evelyn.Core/Evelyn.Core.csproj index 40c9c03..6959506 100644 --- a/src/Evelyn.Core/Evelyn.Core.csproj +++ b/src/Evelyn.Core/Evelyn.Core.csproj @@ -13,7 +13,7 @@ - + all diff --git a/src/Evelyn.Core/EvelynRouteRegistrar.cs b/src/Evelyn.Core/EvelynRouteRegistrar.cs deleted file mode 100644 index 39ab0b7..0000000 --- a/src/Evelyn.Core/EvelynRouteRegistrar.cs +++ /dev/null @@ -1,58 +0,0 @@ -namespace Evelyn.Core -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using CQRSlite.Routing; - - public class EvelynRouteRegistrar : RouteRegistrar - { - /// - /// Initializes a new instance of the class. - /// - /// Service locator that can resolve all handlers - public EvelynRouteRegistrar(IServiceProvider serviceLocator) - : base(serviceLocator) - { - } - - protected IServiceProvider ServiceLocator => typeof(RouteRegistrar).GetField("_serviceLocator", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) as IServiceProvider; - - public void RegisterHandlers(IEnumerable handlerTypes) - { - var registrar = (IHandlerRegistrar)ServiceLocator.GetService(typeof(IHandlerRegistrar)); - - var executorTypes = handlerTypes - .Select(t => new { Type = t, Interfaces = ResolveMessageHandlerInterface(t) }) - .Where(e => e.Interfaces != null && e.Interfaces.Any() && !e.Type.GetTypeInfo().IsAbstract); - - foreach (var executorType in executorTypes) - { - foreach (var @interface in executorType.Interfaces) - { - InvokeHandler(@interface, registrar, executorType.Type); - } - } - } - - public void RegisterHandlers(params Type[] handlerTypes) - { - RegisterHandlers(handlerTypes.ToList()); - } - - protected IEnumerable ResolveMessageHandlerInterface(Type type) - { - return (IEnumerable)typeof(RouteRegistrar) - .GetMethod("ResolveMessageHandlerInterface", BindingFlags.NonPublic | BindingFlags.Static) - .Invoke(null, new object[] { type }); - } - - protected void InvokeHandler(Type @interface, IHandlerRegistrar registrar, Type executorType) - { - typeof(RouteRegistrar) - .GetMethod("InvokeHandler", BindingFlags.NonPublic | BindingFlags.Instance) - .Invoke(this, new object[] { @interface, registrar, executorType }); - } - } -} \ No newline at end of file diff --git a/src/Evelyn.Core/RouteRegistrarBootstrapper.cs b/src/Evelyn.Core/RouteRegistrarBootstrapper.cs index ab74dac..234bc48 100644 --- a/src/Evelyn.Core/RouteRegistrarBootstrapper.cs +++ b/src/Evelyn.Core/RouteRegistrarBootstrapper.cs @@ -1,6 +1,7 @@ namespace Evelyn.Core { using System; + using CQRSlite.Routing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -15,8 +16,8 @@ public RouteRegistrarBootstrapper(IOptions handlerOptions) public void Bootstrap(IServiceProvider serviceProvider) { - var registrar = new Core.EvelynRouteRegistrar(serviceProvider); - registrar.RegisterHandlers(_handlerOptions.Value.Handlers); + var registrar = new RouteRegistrar(serviceProvider); + registrar.RegisterHandlers(_handlerOptions.Value.Handlers.ToArray()); } } } diff --git a/src/Evelyn.Host/Evelyn.Host.csproj b/src/Evelyn.Host/Evelyn.Host.csproj index 72266c0..305e9f1 100644 --- a/src/Evelyn.Host/Evelyn.Host.csproj +++ b/src/Evelyn.Host/Evelyn.Host.csproj @@ -17,7 +17,7 @@ - + all diff --git a/src/Evelyn.Management.Api.Rest/Evelyn.Management.Api.Rest.csproj b/src/Evelyn.Management.Api.Rest/Evelyn.Management.Api.Rest.csproj index 3ad0891..4dc7703 100644 --- a/src/Evelyn.Management.Api.Rest/Evelyn.Management.Api.Rest.csproj +++ b/src/Evelyn.Management.Api.Rest/Evelyn.Management.Api.Rest.csproj @@ -17,7 +17,7 @@ - + all