Fix a bug when having more than one named handler per message subscriber
This commit is contained in:
parent
31dd002cde
commit
47d715e97b
@ -128,11 +128,13 @@ class MessengerPass implements CompilerPassInterface
|
|||||||
if ('__invoke' !== $method) {
|
if ('__invoke' !== $method) {
|
||||||
$wrapperDefinition = (new Definition('callable'))->addArgument(array(new Reference($serviceId), $method))->setFactory('Closure::fromCallable');
|
$wrapperDefinition = (new Definition('callable'))->addArgument(array(new Reference($serviceId), $method))->setFactory('Closure::fromCallable');
|
||||||
|
|
||||||
$definitions[$serviceId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition;
|
$definitions[$definitionId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition;
|
||||||
|
} else {
|
||||||
|
$definitionId = $serviceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($handlerBuses as $handlerBus) {
|
foreach ($handlerBuses as $handlerBus) {
|
||||||
$handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $serviceId;
|
$handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $definitionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,12 @@ class MessengerPassTest extends TestCase
|
|||||||
$handlerMapping = $handlerLocatorDefinition->getArgument(0);
|
$handlerMapping = $handlerLocatorDefinition->getArgument(0);
|
||||||
|
|
||||||
$this->assertArrayHasKey('handler.'.DummyMessage::class, $handlerMapping);
|
$this->assertArrayHasKey('handler.'.DummyMessage::class, $handlerMapping);
|
||||||
|
$firstReference = $handlerMapping['handler.'.DummyMessage::class]->getValues()[0];
|
||||||
|
$this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'dummyMethod'), $container->getDefinition($firstReference)->getArgument(0));
|
||||||
|
|
||||||
$this->assertArrayHasKey('handler.'.SecondMessage::class, $handlerMapping);
|
$this->assertArrayHasKey('handler.'.SecondMessage::class, $handlerMapping);
|
||||||
|
$secondReference = $handlerMapping['handler.'.SecondMessage::class]->getValues()[0];
|
||||||
|
$this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'secondMessage'), $container->getDefinition($secondReference)->getArgument(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user