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

Skip to content

Commit f8145c4

Browse files
committed
Move the analysis of the serializer to the framework bundle
1 parent 0c3d0a3 commit f8145c4

File tree

11 files changed

+57
-33
lines changed

11 files changed

+57
-33
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,8 +1024,8 @@ function ($a) {
10241024
->end()
10251025
->end()
10261026
->end()
1027-
->scalarNode('encoder')->defaultValue('messenger.transport.symfony_serializer_encoder')->end()
1028-
->scalarNode('decoder')->defaultValue('messenger.transport.symfony_serializer_decoder')->end()
1027+
->scalarNode('encoder')->defaultValue('messenger.transport.symfony_serializer')->end()
1028+
->scalarNode('decoder')->defaultValue('messenger.transport.symfony_serializer')->end()
10291029
->end()
10301030
->end()
10311031
->arrayNode('middlewares')

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public function load(array $configs, ContainerBuilder $container)
273273
}
274274

275275
if ($this->isConfigEnabled($container, $config['messenger'])) {
276-
$this->registerMessengerConfiguration($config['messenger'], $container, $loader);
276+
$this->registerMessengerConfiguration($config['messenger'], $container, $loader, $config['serializer']);
277277
} else {
278278
$container->removeDefinition('console.command.messenger_consume_messages');
279279
}
@@ -1438,19 +1438,22 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont
14381438
}
14391439
}
14401440

1441-
private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
1441+
private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, array $serializerConfig)
14421442
{
14431443
if (!interface_exists(MessageBusInterface::class)) {
14441444
throw new LogicException('Messenger support cannot be enabled as the Messenger component is not installed.');
14451445
}
14461446

14471447
$loader->load('messenger.xml');
14481448

1449-
if ($config['transport']['serializer']['enabled']) {
1449+
if ($this->isConfigEnabled($container, $config['transport']['serializer'])) {
1450+
if (count($config['adapters']) > 0 && !$this->isConfigEnabled($container, $serializerConfig)) {
1451+
throw new LogicException('Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".');
1452+
}
1453+
14501454
$container->getDefinition('messenger.transport.symfony_serializer')
14511455
->replaceArgument(1, $config['transport']['serializer']['format'])
1452-
->replaceArgument(2, $config['transport']['serializer']['context'])
1453-
;
1456+
->replaceArgument(2, $config['transport']['serializer']['context']);
14541457
} else {
14551458
$container->removeDefinition('messenger.transport.symfony_serializer');
14561459
$container->removeAlias('messenger.transport.symfony_serializer_encoder');

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@
4949
<argument type="collection" /> <!-- Context -->
5050
</service>
5151

52-
<service id="messenger.transport.symfony_serializer_encoder" alias="messenger.transport.symfony_serializer" />
53-
<service id="messenger.transport.symfony_serializer_decoder" alias="messenger.transport.symfony_serializer" />
54-
5552
<!-- Logging & Debug -->
5653
<service id="messenger.middleware.debug.logging" class="Symfony\Component\Messenger\Debug\LoggingMiddleware">
5754
<argument type="service" id="logger" />

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
266266
'format' => 'json',
267267
'context' => array(),
268268
),
269-
'encoder' => 'messenger.transport.symfony_serializer_encoder',
270-
'decoder' => 'messenger.transport.symfony_serializer_decoder',
269+
'encoder' => 'messenger.transport.symfony_serializer',
270+
'decoder' => 'messenger.transport.symfony_serializer',
271271
),
272272
),
273273
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', array(
4+
'serializer' => array(
5+
'enabled' => false
6+
),
7+
'messenger' => array(
8+
'adapters' => array(
9+
'default' => 'amqp://localhost/%2f/messages',
10+
),
11+
),
12+
));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:framework="http://symfony.com/schema/dic/symfony"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config>
9+
<framework:serializer enabled="false" />
10+
<framework:messenger>
11+
<framework:adapter name="default" dsn="amqp://localhost/%2f/messages" />
12+
</framework:messenger>
13+
</framework:config>
14+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
framework:
2+
serializer:
3+
enabled: false
4+
messenger:
5+
adapters:
6+
default: 'amqp://localhost/%2f/messages'

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -567,12 +567,21 @@ public function testMessengerAdapter()
567567
$this->assertEquals(array('queue_name' => 'Queue'), $receiverArguments[1]);
568568
}
569569

570+
/**
571+
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
572+
* @expectedExceptionMessage Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".
573+
*/
574+
public function testMessengerTransportConfigurationWithoutSerializer()
575+
{
576+
$this->createContainerFromFile('messenger_transport_no_serializer');
577+
}
578+
570579
public function testMessengerTransportConfiguration()
571580
{
572581
$container = $this->createContainerFromFile('messenger_transport');
573582

574-
$this->assertSame('messenger.transport.symfony_serializer_encoder', (string) $container->getAlias('messenger.transport.encoder'));
575-
$this->assertSame('messenger.transport.symfony_serializer_decoder', (string) $container->getAlias('messenger.transport.decoder'));
583+
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.transport.encoder'));
584+
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.transport.decoder'));
576585

577586
$serializerTransportDefinition = $container->getDefinition('messenger.transport.symfony_serializer');
578587
$this->assertSame('csv', $serializerTransportDefinition->getArgument(1));

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
"symfony/polyfill-mbstring": "~1.0",
2828
"symfony/filesystem": "~3.4|~4.0",
2929
"symfony/finder": "~3.4|~4.0",
30-
"symfony/routing": "^4.1"
30+
"symfony/routing": "^4.1",
31+
"phpunit/phpunit": "^5.7"
3132
},
3233
"require-dev": {
3334
"doctrine/cache": "~1.0",

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@ public function process(ContainerBuilder $container)
5353
$container->removeDefinition('messenger.middleware.debug.logging');
5454
}
5555

56-
if (!$container->has('serializer') && $container->hasAlias('messenger.transport.encoder')) {
57-
if ('messenger.transport.symfony_serializer_encoder' === (string) $container->getAlias('messenger.transport.encoder')) {
58-
throw new RuntimeException('Using the default encoder/decoder, Symfony Messenger requires the Serializer. Try running "composer require symfony/serializer-pack".');
59-
}
60-
}
61-
6256
$this->registerReceivers($container);
6357
$this->registerHandlers($container);
6458
}

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

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -195,18 +195,6 @@ public function testNeedsToHandleAtLeastOneMessage()
195195
(new MessengerPass())->process($container);
196196
}
197197

198-
/**
199-
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
200-
* @expectedExceptionMessage Using the default encoder/decoder, Symfony Messenger requires the Serializer. Try running "composer require symfony/serializer-pack".
201-
*/
202-
public function testNeedsSerializerToUseDefaultEncoder()
203-
{
204-
$container = $this->getContainerBuilder();
205-
$container->setAlias('messenger.transport.encoder', 'messenger.transport.symfony_serializer_encoder');
206-
207-
(new MessengerPass())->process($container);
208-
}
209-
210198
private function getContainerBuilder(): ContainerBuilder
211199
{
212200
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)