Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1ba2d57

Browse files
committed
Merge branch '4.1'
* 4.1: FrameworkBundle 4.1 == Messenger 4.1 Revert "Move commands-specifics to a compiler pass in FWB"
2 parents c5904be + 15f0be9 commit 1ba2d57

File tree

6 files changed

+59
-159
lines changed

6 files changed

+59
-159
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/MessengerCommandsPass.php

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ContainerBuilderDebugDumpPass;
2222
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\DataCollectorTranslatorPass;
2323
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\LoggingTranslatorPass;
24-
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\MessengerCommandsPass;
2524
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ProfilerPass;
2625
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TemplatingPass;
2726
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TestServiceContainerRealRefPass;
@@ -120,7 +119,6 @@ public function build(ContainerBuilder $container)
120119
$container->addCompilerPass(new TestServiceContainerWeakRefPass(), PassConfig::TYPE_BEFORE_REMOVING, -32);
121120
$container->addCompilerPass(new TestServiceContainerRealRefPass(), PassConfig::TYPE_AFTER_REMOVING);
122121
$this->addCompilerPassIfExists($container, MessengerPass::class);
123-
$container->addCompilerPass(new MessengerCommandsPass());
124122

125123
if ($container->getParameter('kernel.debug')) {
126124
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/MessengerCommandsPassTest.php

Lines changed: 0 additions & 45 deletions
This file was deleted.

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

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,30 @@ private function guessHandledClasses(\ReflectionClass $handlerClass, string $ser
234234

235235
private function registerReceivers(ContainerBuilder $container)
236236
{
237-
$receiverMapping = self::findReceivers($container, $this->receiverTag);
237+
$receiverMapping = array();
238+
239+
foreach ($container->findTaggedServiceIds($this->receiverTag) as $id => $tags) {
240+
$receiverClass = $container->findDefinition($id)->getClass();
241+
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
242+
throw new RuntimeException(sprintf('Invalid receiver "%s": class "%s" must implement interface "%s".', $id, $receiverClass, ReceiverInterface::class));
243+
}
244+
245+
$receiverMapping[$id] = new Reference($id);
246+
247+
foreach ($tags as $tag) {
248+
if (isset($tag['alias'])) {
249+
$receiverMapping[$tag['alias']] = $receiverMapping[$id];
250+
}
251+
}
252+
}
253+
254+
if ($container->hasDefinition('console.command.messenger_consume_messages')) {
255+
$receiverNames = array();
256+
foreach ($receiverMapping as $name => $reference) {
257+
$receiverNames[(string) $reference] = $name;
258+
}
259+
$container->getDefinition('console.command.messenger_consume_messages')->replaceArgument(3, array_values($receiverNames));
260+
}
238261

239262
$container->getDefinition('messenger.receiver_locator')->replaceArgument(0, $receiverMapping);
240263
}
@@ -303,29 +326,4 @@ private function registerBusMiddleware(ContainerBuilder $container, string $busI
303326

304327
$container->getDefinition($busId)->replaceArgument(0, $middlewareReferences);
305328
}
306-
307-
/**
308-
* @internal
309-
*/
310-
public static function findReceivers(ContainerBuilder $container, string $receiverTag)
311-
{
312-
$receiverMapping = array();
313-
314-
foreach ($container->findTaggedServiceIds($receiverTag) as $id => $tags) {
315-
$receiverClass = $container->findDefinition($id)->getClass();
316-
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
317-
throw new RuntimeException(sprintf('Invalid receiver "%s": class "%s" must implement interface "%s".', $id, $receiverClass, ReceiverInterface::class));
318-
}
319-
320-
$receiverMapping[$id] = new Reference($id);
321-
322-
foreach ($tags as $tag) {
323-
if (isset($tag['alias'])) {
324-
$receiverMapping[$tag['alias']] = $receiverMapping[$id];
325-
}
326-
}
327-
}
328-
329-
return $receiverMapping;
330-
}
331329
}

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

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
use Symfony\Component\DependencyInjection\ContainerBuilder;
1919
use Symfony\Component\DependencyInjection\Reference;
2020
use Symfony\Component\DependencyInjection\ServiceLocator;
21+
use Symfony\Component\Messenger\Command\ConsumeMessagesCommand;
2122
use Symfony\Component\Messenger\Command\DebugCommand;
2223
use Symfony\Component\Messenger\DataCollector\MessengerDataCollector;
2324
use Symfony\Component\Messenger\DependencyInjection\MessengerPass;
25+
use Symfony\Component\Messenger\Envelope;
2426
use Symfony\Component\Messenger\Handler\ChainHandler;
2527
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
2628
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
@@ -33,12 +35,12 @@
3335
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
3436
use Symfony\Component\Messenger\Tests\Fixtures\DummyQuery;
3537
use Symfony\Component\Messenger\Tests\Fixtures\DummyQueryHandler;
36-
use Symfony\Component\Messenger\Tests\Fixtures\DummyReceiver;
3738
use Symfony\Component\Messenger\Tests\Fixtures\MultipleBusesMessage;
3839
use Symfony\Component\Messenger\Tests\Fixtures\MultipleBusesMessageHandler;
3940
use Symfony\Component\Messenger\Tests\Fixtures\SecondMessage;
4041
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceiver;
4142
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpSender;
43+
use Symfony\Component\Messenger\Transport\ReceiverInterface;
4244

4345
class MessengerPassTest extends TestCase
4446
{
@@ -235,6 +237,24 @@ public function testItRegistersReceiversWithoutTagName()
235237
$this->assertEquals(array(AmqpReceiver::class => new Reference(AmqpReceiver::class)), $container->getDefinition('messenger.receiver_locator')->getArgument(0));
236238
}
237239

240+
public function testItRegistersMultipleReceiversAndSetsTheReceiverNamesOnTheCommand()
241+
{
242+
$container = $this->getContainerBuilder();
243+
$container->register('console.command.messenger_consume_messages', ConsumeMessagesCommand::class)->setArguments(array(
244+
new Reference('message_bus'),
245+
new Reference('messenger.receiver_locator'),
246+
null,
247+
null,
248+
));
249+
250+
$container->register(AmqpReceiver::class, AmqpReceiver::class)->addTag('messenger.receiver', array('alias' => 'amqp'));
251+
$container->register(DummyReceiver::class, DummyReceiver::class)->addTag('messenger.receiver', array('alias' => 'dummy'));
252+
253+
(new MessengerPass())->process($container);
254+
255+
$this->assertSame(array('amqp', 'dummy'), $container->getDefinition('console.command.messenger_consume_messages')->getArgument(3));
256+
}
257+
238258
public function testItRegistersSenders()
239259
{
240260
$container = $this->getContainerBuilder();
@@ -609,6 +629,20 @@ public function __invoke(DummyMessage $message): void
609629
}
610630
}
611631

632+
class DummyReceiver implements ReceiverInterface
633+
{
634+
public function receive(callable $handler): void
635+
{
636+
for ($i = 0; $i < 3; ++$i) {
637+
$handler(Envelope::wrap(new DummyMessage("Dummy $i")));
638+
}
639+
}
640+
641+
public function stop(): void
642+
{
643+
}
644+
}
645+
612646
class InvalidReceiver
613647
{
614648
}

src/Symfony/Component/Messenger/Tests/Fixtures/DummyReceiver.php

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)