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

Skip to content

Commit 70b448d

Browse files
committed
Reorganizing messenger serializer config and replacing base64_encode with addslashes
1 parent 238f844 commit 70b448d

File tree

17 files changed

+73
-54
lines changed

17 files changed

+73
-54
lines changed

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

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,20 +1143,25 @@ function ($a) {
11431143
->end()
11441144
->end()
11451145
->end()
1146-
->scalarNode('default_serializer')
1147-
->defaultValue('messenger.transport.native_php_serializer')
1148-
->info('Service id to use as the default serializer for the transports.')
1149-
->end()
1150-
->arrayNode('symfony_serializer')
1146+
->arrayNode('serializer')
11511147
->addDefaultsIfNotSet()
11521148
->children()
1153-
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
1154-
->arrayNode('context')
1155-
->normalizeKeys(false)
1156-
->useAttributeAsKey('name')
1157-
->defaultValue([])
1158-
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
1159-
->prototype('variable')->end()
1149+
->scalarNode('default_serializer')
1150+
->defaultValue('messenger.transport.native_php_serializer')
1151+
->info('Service id to use as the default serializer for the transports.')
1152+
->end()
1153+
->arrayNode('symfony_serializer')
1154+
->addDefaultsIfNotSet()
1155+
->children()
1156+
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
1157+
->arrayNode('context')
1158+
->normalizeKeys(false)
1159+
->useAttributeAsKey('name')
1160+
->defaultValue([])
1161+
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
1162+
->prototype('variable')->end()
1163+
->end()
1164+
->end()
11601165
->end()
11611166
->end()
11621167
->end()

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,9 +1692,9 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16921692
$container->removeDefinition('messenger.transport.amqp.factory');
16931693
} else {
16941694
$container->getDefinition('messenger.transport.symfony_serializer')
1695-
->replaceArgument(1, $config['symfony_serializer']['format'])
1696-
->replaceArgument(2, $config['symfony_serializer']['context']);
1697-
$container->setAlias('messenger.default_serializer', $config['default_serializer']);
1695+
->replaceArgument(1, $config['serializer']['symfony_serializer']['format'])
1696+
->replaceArgument(2, $config['serializer']['symfony_serializer']['context']);
1697+
$container->setAlias('messenger.default_serializer', $config['serializer']['default_serializer']);
16981698
}
16991699

17001700
$senderAliases = [];

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -407,17 +407,21 @@
407407

408408
<xsd:complexType name="messenger">
409409
<xsd:sequence>
410-
<xsd:element name="default-serializer" type="xsd:string" minOccurs="0" />
411-
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
412-
<xsd:element name="encoder" type="xsd:string" minOccurs="0" />
413-
<xsd:element name="decoder" type="xsd:string" minOccurs="0" />
410+
<xsd:element name="serializer" type="messenger_serializer" minOccurs="0" />
414411
<xsd:element name="routing" type="messenger_routing" minOccurs="0" maxOccurs="unbounded" />
415412
<xsd:element name="transport" type="messenger_transport" minOccurs="0" maxOccurs="unbounded" />
416413
<xsd:element name="bus" type="messenger_bus" minOccurs="0" maxOccurs="unbounded" />
417414
</xsd:sequence>
418415
<xsd:attribute name="default-bus" type="xsd:string" />
419416
</xsd:complexType>
420417

418+
<xsd:complexType name="messenger_serializer">
419+
<xsd:sequence>
420+
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
421+
</xsd:sequence>
422+
<xsd:attribute name="default-serializer" type="xsd:string" />
423+
</xsd:complexType>
424+
421425
<xsd:complexType name="messenger_symfony_serializer">
422426
<xsd:sequence>
423427
<xsd:element name="context" type="metadata" minOccurs="0" maxOccurs="unbounded" />

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,12 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
328328
'enabled' => !class_exists(FullStack::class) && interface_exists(MessageBusInterface::class),
329329
'routing' => [],
330330
'transports' => [],
331-
'default_serializer' => 'messenger.transport.native_php_serializer',
332-
'symfony_serializer' => [
333-
'format' => 'json',
334-
'context' => [],
331+
'serializer' => [
332+
'default_serializer' => 'messenger.transport.native_php_serializer',
333+
'symfony_serializer' => [
334+
'format' => 'json',
335+
'context' => [],
336+
],
335337
],
336338
'default_bus' => null,
337339
'buses' => ['messenger.bus.default' => ['default_middleware' => true, 'middleware' => []]],

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
$container->loadFromExtension('framework', [
77
'messenger' => [
8-
'default_serializer' => false,
98
'routing' => [
109
FooMessage::class => ['sender.bar', 'sender.biz'],
1110
BarMessage::class => 'sender.foo',

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_routing.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'default_serializer' => 'messenger.transport.symfony_serializer',
6+
'serializer' => [
7+
'default_serializer' => 'messenger.transport.symfony_serializer',
8+
],
79
'routing' => [
810
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => ['amqp', 'audit'],
911
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => [

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transport.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'default_serializer' => 'messenger.transport.symfony_serializer',
7-
'symfony_serializer' => [
8-
'format' => 'csv',
9-
'context' => ['enable_max_depth' => true],
6+
'serializer' => [
7+
'default_serializer' => 'messenger.transport.symfony_serializer',
8+
'symfony_serializer' => [
9+
'format' => 'csv',
10+
'context' => ['enable_max_depth' => true],
11+
],
1012
],
1113
'transports' => [
1214
'default' => 'amqp://localhost/%2f/messages',

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transports.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'default_serializer' => 'messenger.transport.symfony_serializer',
6+
'serializer' => [
7+
'default_serializer' => 'messenger.transport.symfony_serializer',
8+
],
79
'transports' => [
810
'default' => 'amqp://localhost/%2f/messages',
911
'customised' => [

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_routing.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
11+
<framework:serializer default-serializer="messenger.transport.symfony_serializer" />
1212
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
1313
<framework:sender service="amqp" />
1414
<framework:sender service="audit" />

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_transport.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
12-
<framework:symfony-serializer format="csv">
13-
<framework:context>
14-
<framework:enable_max_depth>true</framework:enable_max_depth>
15-
</framework:context>
16-
</framework:symfony-serializer>
11+
<framework:serializer default-serializer="messenger.transport.symfony_serializer">
12+
<framework:symfony-serializer format="csv">
13+
<framework:context>
14+
<framework:enable_max_depth>true</framework:enable_max_depth>
15+
</framework:context>
16+
</framework:symfony-serializer>
17+
</framework:serializer>
1718
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1819
</framework:messenger>
1920
</framework:config>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_transports.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
11+
<framework:serializer default-serializer="messenger.transport.symfony_serializer" />
1212
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1313
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name" serializer="messenger.transport.native_php_serializer">
1414
<framework:options>
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
framework:
22
messenger:
3-
default_serializer: false
43
routing:
54
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
65
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_routing.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
framework:
22
serializer: true
33
messenger:
4-
default_serializer: messenger.transport.symfony_serializer
4+
serializer:
5+
default_serializer: messenger.transport.symfony_serializer
56
routing:
67
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
78
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
framework:
22
serializer: true
33
messenger:
4-
default_serializer: messenger.transport.symfony_serializer
5-
symfony_serializer:
6-
format: csv
7-
context:
8-
enable_max_depth: true
4+
serializer:
5+
default_serializer: messenger.transport.symfony_serializer
6+
symfony_serializer:
7+
format: csv
8+
context:
9+
enable_max_depth: true
910
transports:
1011
default: 'amqp://localhost/%2f/messages'

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_transports.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
framework:
22
serializer: true
33
messenger:
4-
default_serializer: messenger.transport.symfony_serializer
4+
serializer:
5+
default_serializer: messenger.transport.symfony_serializer
56
transports:
67
default: 'amqp://localhost/%2f/messages'
78
customised:

src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public function testEncodedIsDecodable()
2525

2626
$envelope = new Envelope(new DummyMessage('Hello'));
2727

28-
$this->assertEquals($envelope, $serializer->decode($serializer->encode($envelope)));
28+
$encoded = $serializer->encode($envelope);
29+
$this->assertNotContains("\0", $encoded['body'], 'Does not contain the binary characters');
30+
$this->assertEquals($envelope, $serializer->decode($encoded));
2931
}
3032

3133
public function testDecodingFailsWithMissingBodyKey()
@@ -58,7 +60,7 @@ public function testDecodingFailsWithBadClass()
5860
$serializer = new PhpSerializer();
5961

6062
$serializer->decode([
61-
'body' => base64_encode('O:13:"ReceivedSt0mp":0:{}'),
63+
'body' => 'O:13:"ReceivedSt0mp":0:{}',
6264
]);
6365
}
6466
}

src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@ public function decode(array $encodedEnvelope): Envelope
3030
throw new MessageDecodingFailedException('Encoded envelope should have at least a "body".');
3131
}
3232

33-
$serializeEnvelope = base64_decode($encodedEnvelope['body']);
34-
35-
if (false === $serializeEnvelope) {
36-
throw new MessageDecodingFailedException('The "body" key could not be base64 decoded.');
37-
}
33+
$serializeEnvelope = stripslashes($encodedEnvelope['body']);
3834

3935
return $this->safelyUnserialize($serializeEnvelope);
4036
}
@@ -44,8 +40,10 @@ public function decode(array $encodedEnvelope): Envelope
4440
*/
4541
public function encode(Envelope $envelope): array
4642
{
43+
$body = addslashes(serialize($envelope));
44+
4745
return [
48-
'body' => base64_encode(serialize($envelope)),
46+
'body' => $body,
4947
];
5048
}
5149

0 commit comments

Comments
 (0)