Skip to content

Commit 8fa0fd5

Browse files
committed
Fix a bug when having more than one named handler per message subscriber
1 parent 2e0eb12 commit 8fa0fd5

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

DependencyInjection/MessengerPass.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,13 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
128128
if ('__invoke' !== $method) {
129129
$wrapperDefinition = (new Definition('callable'))->addArgument(array(new Reference($serviceId), $method))->setFactory('Closure::fromCallable');
130130

131-
$definitions[$serviceId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition;
131+
$definitions[$definitionId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition;
132+
} else {
133+
$definitionId = $serviceId;
132134
}
133135

134136
foreach ($handlerBuses as $handlerBus) {
135-
$handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $serviceId;
137+
$handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $definitionId;
136138
}
137139
}
138140
}

Tests/DependencyInjection/MessengerPassTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,12 @@ public function testItShouldNotThrowIfGeneratorIsReturnedInsteadOfArray()
288288
$handlerMapping = $handlerLocatorDefinition->getArgument(0);
289289

290290
$this->assertArrayHasKey('handler.'.DummyMessage::class, $handlerMapping);
291+
$firstReference = $handlerMapping['handler.'.DummyMessage::class]->getValues()[0];
292+
$this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'dummyMethod'), $container->getDefinition($firstReference)->getArgument(0));
293+
291294
$this->assertArrayHasKey('handler.'.SecondMessage::class, $handlerMapping);
295+
$secondReference = $handlerMapping['handler.'.SecondMessage::class]->getValues()[0];
296+
$this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'secondMessage'), $container->getDefinition($secondReference)->getArgument(0));
292297
}
293298

294299
/**

0 commit comments

Comments
 (0)