#19476: Event bus refactoring. Interface name matching should be case-sensitive.

Work Item: 19476

--HG--
branch : 1.x
This commit is contained in:
Piotr Szmyd
2013-02-23 05:39:01 +01:00
parent b04d9ffb32
commit 5bd459a68c
3 changed files with 11 additions and 11 deletions

View File

@@ -22,13 +22,13 @@ namespace Orchard.Tests.Events {
builder.RegisterType<StubExceptionPolicy>().As<IExceptionPolicy>();
builder.RegisterType<StubEventHandler2>()
.Named(typeof(ITestEventHandler).Name.ToLowerInvariant(), typeof(IEventHandler))
.Named(typeof(IEventHandler).Name.ToLowerInvariant(), typeof(IEventHandler))
.WithMetadata("Interfaces", typeof(StubEventHandler2).GetInterfaces().ToLookup(i => i.Name, StringComparer.OrdinalIgnoreCase));
.Named(typeof(ITestEventHandler).Name, typeof(IEventHandler))
.Named(typeof(IEventHandler).Name, typeof(IEventHandler))
.WithMetadata("Interfaces", typeof(StubEventHandler2).GetInterfaces().ToLookup(i => i.Name));
builder.RegisterInstance(_eventHandler)
.Named(typeof(ITestEventHandler).Name.ToLowerInvariant(), typeof(IEventHandler))
.Named(typeof(IEventHandler).Name.ToLowerInvariant(), typeof(IEventHandler))
.WithMetadata("Interfaces", typeof(StubEventHandler).GetInterfaces().ToLookup(i => i.Name, StringComparer.OrdinalIgnoreCase));
.Named(typeof(ITestEventHandler).Name, typeof(IEventHandler))
.Named(typeof(IEventHandler).Name, typeof(IEventHandler))
.WithMetadata("Interfaces", typeof(StubEventHandler).GetInterfaces().ToLookup(i => i.Name));
_container = builder.Build();
_eventBus = _container.Resolve<IEventBus>();

View File

@@ -83,11 +83,11 @@ namespace Orchard.Environment.ShellBuilders {
if (typeof(IEventHandler).IsAssignableFrom(item.Type)) {
var interfaces = item.Type.GetInterfaces();
foreach (var interfaceType in interfaces) {
// Register named instance for each interface, for efficient filtering withing event bus
registration = registration.Named(interfaceType.Name.ToLowerInvariant(), typeof (IEventHandler));
// Register named instance for each interface, for efficient filtering inside event bus
registration = registration.Named(interfaceType.Name, typeof (IEventHandler));
}
// Keep interfaces in metadata for performance
registration = registration.WithMetadata("Interfaces", interfaces.ToLookup(i => i.Name, StringComparer.OrdinalIgnoreCase));
registration = registration.WithMetadata("Interfaces", interfaces.ToLookup(i => i.Name));
}
foreach (var parameter in item.Parameters) {

View File

@@ -37,7 +37,7 @@ namespace Orchard.Events {
string interfaceName = parameters[0];
string methodName = parameters[1];
var eventHandlers = _eventHandlers[interfaceName.ToLowerInvariant()];
var eventHandlers = _eventHandlers[interfaceName];
foreach (var eventHandler in eventHandlers) {
IEnumerable returnValue;
if (TryNotifyHandler(eventHandler, messageName, interfaceName, methodName, eventData, out returnValue)) {
@@ -74,7 +74,7 @@ namespace Orchard.Events {
}
private static bool TryInvokeMethod(IEventHandler eventHandler, Type interfaceType, string methodName, IDictionary<string, object> arguments, out IEnumerable returnValue) {
var key = String.Concat(eventHandler.GetType().FullName + "_" + interfaceType.Name, "_", methodName, "_", String.Join("_", arguments.Keys));
var key = eventHandler.GetType().FullName + "_" + interfaceType.Name + "_" + methodName + "_" + String.Join("_", arguments.Keys);
var cachedDelegate = _delegateCache.GetOrAdd(key, k => {
var method = GetMatchingMethod(eventHandler, interfaceType, methodName, arguments);
return method != null