diff --git a/DependencyInjection/MessengerPass.php b/DependencyInjection/MessengerPass.php index 86fa2550..03f48edf 100644 --- a/DependencyInjection/MessengerPass.php +++ b/DependencyInjection/MessengerPass.php @@ -102,11 +102,9 @@ private function registerHandlers(ContainerBuilder $container, array $busIds): v $options = ['method' => $options]; } - if (!isset($options['from_transport']) && isset($tag['from_transport'])) { - $options['from_transport'] = $tag['from_transport']; - } - - $priority = $tag['priority'] ?? $options['priority'] ?? 0; + $options += array_filter($tag); + unset($options['handles']); + $priority = $options['priority'] ?? 0; $method = $options['method'] ?? '__invoke'; if (isset($options['bus'])) { @@ -115,7 +113,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds): v // $messageLocation = isset($tag['handles']) ? 'declared in your tag attribute "handles"' : sprintf('used as argument type in method "%s::%s()"', $r->getName(), $method); $messageLocation = 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)); - throw new RuntimeException(sprintf('Invalid configuration "%s" for message "%s": bus "%s" does not exist.', $messageLocation, $message, $options['bus'])); + throw new RuntimeException(sprintf('Invalid configuration '.$messageLocation.' for message "%s": bus "%s" does not exist.', $message, $options['bus'])); } $buses = [$options['bus']]; @@ -126,7 +124,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds): v // $messageLocation = isset($tag['handles']) ? 'declared in your tag attribute "handles"' : sprintf('used as argument type in method "%s::%s()"', $r->getName(), $method); $messageLocation = 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)); - throw new RuntimeException(sprintf('Invalid handler service "%s": class or interface "%s" "%s" not found.', $serviceId, $message, $messageLocation)); + throw new RuntimeException(sprintf('Invalid handler service "%s": class or interface "%s" '.$messageLocation.' not found.', $serviceId, $message)); } if (!$r->hasMethod($method)) { diff --git a/Event/WorkerRateLimitedEvent.php b/Event/WorkerRateLimitedEvent.php old mode 100755 new mode 100644 diff --git a/Tests/DependencyInjection/MessengerPassTest.php b/Tests/DependencyInjection/MessengerPassTest.php index cffeac40..226c8d71 100644 --- a/Tests/DependencyInjection/MessengerPassTest.php +++ b/Tests/DependencyInjection/MessengerPassTest.php @@ -268,13 +268,15 @@ public function testProcessHandlersByBus() $container, $commandBusHandlersLocatorDefinition->getArgument(0), MultipleBusesMessage::class, - [MultipleBusesMessageHandler::class] + [MultipleBusesMessageHandler::class], + [['bus' => $commandBusId]] ); $this->assertHandlerDescriptor( $container, $commandBusHandlersLocatorDefinition->getArgument(0), DummyCommand::class, - [DummyCommandHandler::class] + [DummyCommandHandler::class], + [['bus' => $commandBusId]] ); $queryBusHandlersLocatorDefinition = $container->getDefinition($queryBusId.'.messenger.handlers_locator'); @@ -283,13 +285,15 @@ public function testProcessHandlersByBus() $container, $queryBusHandlersLocatorDefinition->getArgument(0), DummyQuery::class, - [DummyQueryHandler::class] + [DummyQueryHandler::class], + [['bus' => $queryBusId]] ); $this->assertHandlerDescriptor( $container, $queryBusHandlersLocatorDefinition->getArgument(0), MultipleBusesMessage::class, - [MultipleBusesMessageHandler::class] + [MultipleBusesMessageHandler::class], + [['bus' => $queryBusId]] ); } @@ -559,7 +563,7 @@ public function testItRegistersHandlersOnDifferentBuses() public function testItThrowsAnExceptionOnUnknownBus() { $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Invalid configuration "returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\HandlerOnUndefinedBus::getHandledMessages()"" for message "Symfony\Component\Messenger\Tests\Fixtures\DummyMessage": bus "some_undefined_bus" does not exist.'); + $this->expectExceptionMessage('Invalid configuration returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\HandlerOnUndefinedBus::getHandledMessages()" for message "Symfony\Component\Messenger\Tests\Fixtures\DummyMessage": bus "some_undefined_bus" does not exist.'); $container = $this->getContainerBuilder(); $container ->register(HandlerOnUndefinedBus::class, HandlerOnUndefinedBus::class) @@ -572,7 +576,7 @@ public function testItThrowsAnExceptionOnUnknownBus() public function testUndefinedMessageClassForHandler() { $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandler": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" "used as argument type in method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandler::__invoke()"" not found.'); + $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandler": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" used as argument type in method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandler::__invoke()" not found.'); $container = $this->getContainerBuilder(); $container ->register(UndefinedMessageHandler::class, UndefinedMessageHandler::class) @@ -588,7 +592,7 @@ public function testUndefinedMessageClassForHandler() public function testUndefinedMessageClassForHandlerImplementingMessageHandlerInterface() { $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" "used as argument type in method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface::__invoke()"" not found.'); + $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" used as argument type in method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaHandlerInterface::__invoke()" not found.'); $container = $this->getContainerBuilder(); $container ->register(UndefinedMessageHandlerViaHandlerInterface::class, UndefinedMessageHandlerViaHandlerInterface::class) @@ -604,7 +608,7 @@ public function testUndefinedMessageClassForHandlerImplementingMessageHandlerInt public function testUndefinedMessageClassForHandlerImplementingMessageSubscriberInterface() { $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" "returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface::getHandledMessages()"" not found.'); + $this->expectExceptionMessage('Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface": class or interface "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessage" returned by method "Symfony\Component\Messenger\Tests\DependencyInjection\UndefinedMessageHandlerViaSubscriberInterface::getHandledMessages()" not found.'); $container = $this->getContainerBuilder(); $container ->register(UndefinedMessageHandlerViaSubscriberInterface::class, UndefinedMessageHandlerViaSubscriberInterface::class) @@ -833,12 +837,12 @@ public function testItRegistersTheDebugCommand() $this->assertEquals([ $commandBusId => [ - DummyCommand::class => [[DummyCommandHandler::class, []]], - MultipleBusesMessage::class => [[MultipleBusesMessageHandler::class, []]], + DummyCommand::class => [[DummyCommandHandler::class, ['bus' => $commandBusId]]], + MultipleBusesMessage::class => [[MultipleBusesMessageHandler::class, ['bus' => $commandBusId]]], ], $queryBusId => [ - DummyQuery::class => [[DummyQueryHandler::class, []]], - MultipleBusesMessage::class => [[MultipleBusesMessageHandler::class, []]], + DummyQuery::class => [[DummyQueryHandler::class, ['bus' => $queryBusId]]], + MultipleBusesMessage::class => [[MultipleBusesMessageHandler::class, ['bus' => $queryBusId]]], ], $emptyBus => [], ], $container->getDefinition('console.command.messenger_debug')->getArgument(0)); diff --git a/Tests/Fixtures/MyOwnException.php b/Tests/Fixtures/MyOwnException.php old mode 100755 new mode 100644