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 fb3f729

Browse filesBrowse files
committed
Revert "Move commands-specifics to a compiler pass in FWB"
This reverts commit b5415ea.
1 parent bc90da7 commit fb3f729
Copy full SHA for fb3f729

File tree

Expand file treeCollapse file tree

7 files changed

+59
-156
lines changed
Filter options
Expand file treeCollapse file tree

7 files changed

+59
-156
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/MessengerCommandsPass.php
-53Lines changed: 0 additions & 53 deletions
This file was deleted.

‎src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
-2Lines 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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/MessengerCommandsPassTest.php
-44Lines changed: 0 additions & 44 deletions
This file was deleted.

‎src/Symfony/Bundle/FrameworkBundle/composer.json

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/composer.json
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
"symfony/asset": "<3.4",
6868
"symfony/console": "<3.4",
6969
"symfony/form": "<4.1",
70-
"symfony/messenger": "<4.1.5",
7170
"symfony/property-info": "<3.4",
7271
"symfony/serializer": "<4.1",
7372
"symfony/stopwatch": "<3.4",

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
+24-26Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,30 @@ private function guessHandledClasses(\ReflectionClass $handlerClass, string $ser
220220

221221
private function registerReceivers(ContainerBuilder $container)
222222
{
223-
$receiverMapping = self::findReceivers($container, $this->receiverTag);
223+
$receiverMapping = array();
224+
225+
foreach ($container->findTaggedServiceIds($this->receiverTag) as $id => $tags) {
226+
$receiverClass = $container->findDefinition($id)->getClass();
227+
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
228+
throw new RuntimeException(sprintf('Invalid receiver "%s": class "%s" must implement interface "%s".', $id, $receiverClass, ReceiverInterface::class));
229+
}
230+
231+
$receiverMapping[$id] = new Reference($id);
232+
233+
foreach ($tags as $tag) {
234+
if (isset($tag['alias'])) {
235+
$receiverMapping[$tag['alias']] = $receiverMapping[$id];
236+
}
237+
}
238+
}
239+
240+
if ($container->hasDefinition('console.command.messenger_consume_messages')) {
241+
$receiverNames = array();
242+
foreach ($receiverMapping as $name => $reference) {
243+
$receiverNames[(string) $reference] = $name;
244+
}
245+
$container->getDefinition('console.command.messenger_consume_messages')->replaceArgument(3, array_values($receiverNames));
246+
}
224247

225248
$container->getDefinition('messenger.receiver_locator')->replaceArgument(0, $receiverMapping);
226249
}
@@ -289,29 +312,4 @@ private function registerBusMiddleware(ContainerBuilder $container, string $busI
289312

290313
$container->getDefinition($busId)->replaceArgument(0, $middlewareReferences);
291314
}
292-
293-
/**
294-
* @internal
295-
*/
296-
public static function findReceivers(ContainerBuilder $container, string $receiverTag)
297-
{
298-
$receiverMapping = array();
299-
300-
foreach ($container->findTaggedServiceIds($receiverTag) as $id => $tags) {
301-
$receiverClass = $container->findDefinition($id)->getClass();
302-
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
303-
throw new RuntimeException(sprintf('Invalid receiver "%s": class "%s" must implement interface "%s".', $id, $receiverClass, ReceiverInterface::class));
304-
}
305-
306-
$receiverMapping[$id] = new Reference($id);
307-
308-
foreach ($tags as $tag) {
309-
if (isset($tag['alias'])) {
310-
$receiverMapping[$tag['alias']] = $receiverMapping[$id];
311-
}
312-
}
313-
}
314-
315-
return $receiverMapping;
316-
}
317315
}

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
+35-1Lines 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();
@@ -567,6 +587,20 @@ public function __invoke(DummyMessage $message): void
567587
}
568588
}
569589

590+
class DummyReceiver implements ReceiverInterface
591+
{
592+
public function receive(callable $handler): void
593+
{
594+
for ($i = 0; $i < 3; ++$i) {
595+
$handler(Envelope::wrap(new DummyMessage("Dummy $i")));
596+
}
597+
}
598+
599+
public function stop(): void
600+
{
601+
}
602+
}
603+
570604
class InvalidReceiver
571605
{
572606
}

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Fixtures/DummyReceiver.php
-29Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

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