Skip to content

Commit 8ec5532

Browse files
committed
Uses a messenger serializer, not an individual encoder/decoder
1 parent 8e08c78 commit 8ec5532

25 files changed

+46
-51
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ CHANGELOG
1111
* Deprecated the `Symfony\Bundle\FrameworkBundle\Controller\Controller` class in favor of `Symfony\Bundle\FrameworkBundle\Controller\AbstractController`.
1212
* Enabled autoconfiguration for `Psr\Log\LoggerAwareInterface`
1313
* Added new "auto" mode for `framework.session.cookie_secure` to turn it on when HTTPS is used
14-
14+
* Removed the `framework.messenger.encoder` and `framework.messenger.decoder` options. Use the `framework.messenger.serializer.id` option to replace the Messenger serializer.
15+
1516
4.1.0
1617
-----
1718

DependencyInjection/Configuration.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,9 +1030,23 @@ function ($a) {
10301030
->end()
10311031
->end()
10321032
->arrayNode('serializer')
1033-
->{!class_exists(FullStack::class) && class_exists(Serializer::class) ? 'canBeDisabled' : 'canBeEnabled'}()
10341033
->addDefaultsIfNotSet()
1034+
->beforeNormalization()
1035+
->always()
1036+
->then(function ($config) {
1037+
if (false === $config) {
1038+
return array('id' => null);
1039+
}
1040+
1041+
if (\is_string($config)) {
1042+
return array('id' => $config);
1043+
}
1044+
1045+
return $config;
1046+
})
1047+
->end()
10351048
->children()
1049+
->scalarNode('id')->defaultValue('messenger.transport.symfony_serializer')->end()
10361050
->scalarNode('format')->defaultValue('json')->end()
10371051
->arrayNode('context')
10381052
->normalizeKeys(false)
@@ -1042,8 +1056,6 @@ function ($a) {
10421056
->end()
10431057
->end()
10441058
->end()
1045-
->scalarNode('encoder')->defaultValue('messenger.transport.serializer')->end()
1046-
->scalarNode('decoder')->defaultValue('messenger.transport.serializer')->end()
10471059
->arrayNode('transports')
10481060
->useAttributeAsKey('name')
10491061
->arrayPrototype()

DependencyInjection/FrameworkExtension.php

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,24 +1490,27 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
14901490

14911491
$loader->load('messenger.xml');
14921492

1493-
if ($this->isConfigEnabled($container, $config['serializer'])) {
1494-
if (!$this->isConfigEnabled($container, $serializerConfig)) {
1495-
throw new LogicException('The default Messenger serializer cannot be enabled as the Serializer support is not available. Try enable it or install it by running "composer require symfony/serializer-pack".');
1493+
if (empty($config['transports'])) {
1494+
$container->removeDefinition('messenger.transport.symfony_serializer');
1495+
$container->removeDefinition('messenger.transport.amqp.factory');
1496+
} else {
1497+
if ('messenger.transport.symfony_serializer' === $config['serializer']['id']) {
1498+
if (!$this->isConfigEnabled($container, $serializerConfig)) {
1499+
throw new LogicException('The default Messenger serializer cannot be enabled as the Serializer support is not available. Try enable it or install it by running "composer require symfony/serializer-pack".');
1500+
}
1501+
1502+
$container->getDefinition('messenger.transport.symfony_serializer')
1503+
->replaceArgument(1, $config['serializer']['format'])
1504+
->replaceArgument(2, $config['serializer']['context']);
14961505
}
14971506

1498-
$container->getDefinition('messenger.transport.serializer')
1499-
->replaceArgument(1, $config['serializer']['format'])
1500-
->replaceArgument(2, $config['serializer']['context']);
1501-
} else {
1502-
$container->removeDefinition('messenger.transport.serializer');
1503-
if ('messenger.transport.serializer' === $config['encoder'] || 'messenger.transport.serializer' === $config['decoder']) {
1507+
if ($config['serializer']['id']) {
1508+
$container->setAlias('messenger.transport.serializer', $config['serializer']['id']);
1509+
} else {
15041510
$container->removeDefinition('messenger.transport.amqp.factory');
15051511
}
15061512
}
15071513

1508-
$container->setAlias('messenger.transport.encoder', $config['encoder']);
1509-
$container->setAlias('messenger.transport.decoder', $config['decoder']);
1510-
15111514
if (null === $config['default_bus']) {
15121515
if (\count($config['buses']) > 1) {
15131516
throw new LogicException(sprintf('You need to define a default bus with the "default_bus" configuration. Possible values: %s', implode(', ', array_keys($config['buses']))));

Resources/config/messenger.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</service>
1919

2020
<!-- Message encoding/decoding -->
21-
<service id="messenger.transport.serializer" class="Symfony\Component\Messenger\Transport\Serialization\Serializer">
21+
<service id="messenger.transport.symfony_serializer" class="Symfony\Component\Messenger\Transport\Serialization\Serializer">
2222
<argument type="service" id="serializer" />
2323
<argument /> <!-- Format -->
2424
<argument type="collection" /> <!-- Context -->
@@ -61,8 +61,7 @@
6161
</service>
6262

6363
<service id="messenger.transport.amqp.factory" class="Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory">
64-
<argument type="service" id="messenger.transport.encoder" />
65-
<argument type="service" id="messenger.transport.decoder" />
64+
<argument type="service" id="messenger.transport.serializer" />
6665
<argument>%kernel.debug%</argument>
6766

6867
<tag name="messenger.transport_factory" />

Resources/config/schema/symfony-1.0.xsd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@
378378
<xsd:element name="context" type="metadata" minOccurs="0" maxOccurs="unbounded" />
379379
</xsd:sequence>
380380
<xsd:attribute name="format" type="xsd:string" />
381-
<xsd:attribute name="enabled" type="xsd:boolean" />
381+
<xsd:attribute name="id" type="xsd:string" />
382382
</xsd:complexType>
383383

384384
<xsd:complexType name="messenger_routing">

Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,12 +293,10 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
293293
'routing' => array(),
294294
'transports' => array(),
295295
'serializer' => array(
296-
'enabled' => !class_exists(FullStack::class),
296+
'id' => 'messenger.transport.symfony_serializer',
297297
'format' => 'json',
298298
'context' => array(),
299299
),
300-
'encoder' => 'messenger.transport.serializer',
301-
'decoder' => 'messenger.transport.serializer',
302300
'default_bus' => null,
303301
'buses' => array('messenger.bus.default' => array('default_middleware' => true, 'middleware' => array())),
304302
),

Tests/DependencyInjection/Fixtures/php/messenger_amqp_transport_no_serializer.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
$container->loadFromExtension('framework', array(
44
'messenger' => array(
5-
'serializer' => array(
6-
'enabled' => false,
7-
),
5+
'serializer' => false,
86
'transports' => array(
97
'default' => 'amqp://localhost/%2f/messages',
108
),

Tests/DependencyInjection/Fixtures/php/messenger_routing.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
$container->loadFromExtension('framework', array(
44
'serializer' => true,
55
'messenger' => array(
6-
'serializer' => true,
76
'routing' => array(
87
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => array('amqp', 'audit'),
98
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => array(

Tests/DependencyInjection/Fixtures/php/messenger_transport.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@
77
'format' => 'csv',
88
'context' => array('enable_max_depth' => true),
99
),
10+
'transports' => array(
11+
'default' => 'amqp://localhost/%2f/messages',
12+
),
1013
),
1114
));

Tests/DependencyInjection/Fixtures/php/messenger_transport_no_serializer.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
'enabled' => false,
66
),
77
'messenger' => array(
8-
'serializer' => array(
9-
'enabled' => true,
10-
),
118
'transports' => array(
129
'default' => 'amqp://localhost/%2f/messages',
1310
),

0 commit comments

Comments
 (0)