Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit d6b6e96

Browse filesBrowse files
massimilianobragliasroze
authored andcommitted
[Messenger] Fixed MessengerPass::guessHandledClasses return type
1 parent f68e194 commit d6b6e96
Copy full SHA for d6b6e96

File tree

2 files changed

+35
-1
lines changed
Filter options

2 files changed

+35
-1
lines changed

‎src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
185185
}
186186
}
187187

188-
private function guessHandledClasses(\ReflectionClass $handlerClass, string $serviceId): array
188+
private function guessHandledClasses(\ReflectionClass $handlerClass, string $serviceId): iterable
189189
{
190190
if ($handlerClass->implementsInterface(MessageSubscriberInterface::class)) {
191191
if (!$handledMessages = $handlerClass->getName()::getHandledMessages()) {

‎src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
+34Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,23 @@ public function testItRegistersSenderWithoutTagName()
274274
$this->assertEquals(array(AmqpSender::class => new Reference(AmqpSender::class)), $container->getDefinition('messenger.sender_locator')->getArgument(0));
275275
}
276276

277+
public function testItShouldNotThrowIfGeneratorIsReturnedInsteadOfArray()
278+
{
279+
$container = $this->getContainerBuilder($busId = 'message_bus');
280+
$container
281+
->register(HandlerWithGenerators::class, HandlerWithGenerators::class)
282+
->addTag('messenger.message_handler')
283+
;
284+
285+
(new MessengerPass())->process($container);
286+
287+
$handlerLocatorDefinition = $container->getDefinition($container->getDefinition("$busId.messenger.handler_resolver")->getArgument(0));
288+
$handlerMapping = $handlerLocatorDefinition->getArgument(0);
289+
290+
$this->assertArrayHasKey('handler.'.DummyMessage::class, $handlerMapping);
291+
$this->assertArrayHasKey('handler.'.SecondMessage::class, $handlerMapping);
292+
}
293+
277294
/**
278295
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
279296
* @expectedExceptionMessage Invalid sender "app.messenger.sender": class "Symfony\Component\Messenger\Tests\DependencyInjection\InvalidSender" must implement interface "Symfony\Component\Messenger\Transport\SenderInterface".
@@ -685,6 +702,23 @@ public function __invoke()
685702
}
686703
}
687704

705+
class HandlerWithGenerators implements MessageSubscriberInterface
706+
{
707+
public static function getHandledMessages(): iterable
708+
{
709+
yield DummyMessage::class => 'dummyMethod';
710+
yield SecondMessage::class => 'secondMessage';
711+
}
712+
713+
public function dummyMethod()
714+
{
715+
}
716+
717+
public function secondMessage()
718+
{
719+
}
720+
}
721+
688722
class UselessMiddleware implements MiddlewareInterface
689723
{
690724
public function handle($message, callable $next)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.