Skip to content

Commit 4dfa79d

Browse files
Merge branch '4.1'
* 4.1: [HttpKernel] Fixed invalid REMOTE_ADDR in inline subrequest when configuring trusted proxy with subnet [FrameworkBundle] fixed guard event names for transitions [DI] Improve class named servics error message remove unnecessary instanceof in MongoDbSessionHandler [HttpFoundation] fixed using _method parameter with invalid type Renaming internal test class to help auto-completion [Intl] Replace svn with git in the icu data update script [Messenger] Fix error message on undefined message class for non-subscriber handler [HttpFoundation] Fix Cookie::isCleared
2 parents d86f69e + 00e6202 commit 4dfa79d

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

DependencyInjection/MessengerPass.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
use Symfony\Component\DependencyInjection\Reference;
2222
use Symfony\Component\Messenger\Handler\ChainHandler;
2323
use Symfony\Component\Messenger\Handler\Locator\ContainerHandlerLocator;
24-
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
2524
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
2625
use Symfony\Component\Messenger\TraceableMessageBus;
2726
use Symfony\Component\Messenger\Transport\ReceiverInterface;
@@ -116,7 +115,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
116115
}
117116

118117
if (!\class_exists($messageClass)) {
119-
$messageClassLocation = isset($tag['handles']) ? 'declared in your tag attribute "handles"' : $r->implementsInterface(MessageHandlerInterface::class) ? sprintf('returned by method "%s::getHandledMessages()"', $r->getName()) : sprintf('used as argument type in method "%s::%s()"', $r->getName(), $method);
118+
$messageClassLocation = isset($tag['handles']) ? 'declared in your tag attribute "handles"' : $r->implementsInterface(MessageSubscriberInterface::class) ? sprintf('returned by method "%s::getHandledMessages()"', $r->getName()) : sprintf('used as argument type in method "%s::%s()"', $r->getName(), $method);
120119

121120
throw new RuntimeException(sprintf('Invalid handler service "%s": message class "%s" %s does not exist.', $serviceId, $messageClass, $messageClassLocation));
122121
}

Tests/DependencyInjection/MessengerPassTest.php

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Symfony\Component\Messenger\DependencyInjection\MessengerPass;
2525
use Symfony\Component\Messenger\Envelope;
2626
use Symfony\Component\Messenger\Handler\ChainHandler;
27+
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
2728
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
2829
use Symfony\Component\Messenger\MessageBusInterface;
2930
use Symfony\Component\Messenger\Middleware\AllowNoHandlerMiddleware;
@@ -326,13 +327,28 @@ public function testUndefinedMessageClassForHandler()
326327

327328
/**
328329
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
329-
* @expectedExceptionMessage Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaInterface": message class "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaInterface::getHandledMessages()" does not exist.
330+
* @expectedExceptionMessage Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface": message class "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" used as argument type in method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface::__invoke()" does not exist.
330331
*/
331-
public function testUndefinedMessageClassForHandlerViaInterface()
332+
public function testUndefinedMessageClassForHandlerImplementingMessageHandlerInterface()
332333
{
333334
$container = $this->getContainerBuilder();
334335
$container
335-
->register(UndefinedMessageHandlerViaInterface::class, UndefinedMessageHandlerViaInterface::class)
336+
->register(UndefinedMessageHandlerViaHandlerInterface::class, UndefinedMessageHandlerViaHandlerInterface::class)
337+
->addTag('messenger.message_handler')
338+
;
339+
340+
(new MessengerPass())->process($container);
341+
}
342+
343+
/**
344+
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
345+
* @expectedExceptionMessage Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface": message class "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface::getHandledMessages()" does not exist.
346+
*/
347+
public function testUndefinedMessageClassForHandlerImplementingMessageSubscriberInterface()
348+
{
349+
$container = $this->getContainerBuilder();
350+
$container
351+
->register(UndefinedMessageHandlerViaSubscriberInterface::class, UndefinedMessageHandlerViaSubscriberInterface::class)
336352
->addTag('messenger.message_handler')
337353
;
338354

@@ -600,7 +616,14 @@ public function __invoke(UndefinedMessage $message)
600616
}
601617
}
602618

603-
class UndefinedMessageHandlerViaInterface implements MessageSubscriberInterface
619+
class UndefinedMessageHandlerViaHandlerInterface implements MessageHandlerInterface
620+
{
621+
public function __invoke(UndefinedMessage $message)
622+
{
623+
}
624+
}
625+
626+
class UndefinedMessageHandlerViaSubscriberInterface implements MessageSubscriberInterface
604627
{
605628
public static function getHandledMessages(): iterable
606629
{

0 commit comments

Comments
 (0)