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

Skip to content

Commit b2ebd79

Browse files
committed
Uses a messenger serializer, not an individual encoder/decoder
1 parent 004c315 commit b2ebd79

34 files changed

+93
-135
lines changed

src/Symfony/Bundle/FrameworkBundle/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()

src/Symfony/Bundle/FrameworkBundle/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']))));

src/Symfony/Bundle/FrameworkBundle/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" />

src/Symfony/Bundle/FrameworkBundle/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">

src/Symfony/Bundle/FrameworkBundle/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
),

src/Symfony/Bundle/FrameworkBundle/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
),

src/Symfony/Bundle/FrameworkBundle/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(

src/Symfony/Bundle/FrameworkBundle/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
));

src/Symfony/Bundle/FrameworkBundle/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
),

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transports.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
'transports' => array(
87
'default' => 'amqp://localhost/%2f/messages',
98
'customised' => array(

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,4 @@
44
'serializer' => array(
55
'enabled' => false,
66
),
7-
'messenger' => array(
8-
'serializer' => false,
9-
),
107
));

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

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

88
<framework:config>
99
<framework:messenger>
10-
<framework:serializer enabled="false" />
1110
<framework:routing message-class="Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage">
1211
<framework:sender service="sender.bar" />
1312
<framework:sender service="sender.biz" />

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<framework:config>
99
<framework:messenger>
10-
<framework:serializer enabled="false" />
10+
<framework:serializer id="null" />
1111
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1212
</framework:messenger>
1313
</framework:config>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:serializer enabled="true" />
1211
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
1312
<framework:sender service="amqp" />
1413
<framework:sender service="audit" />

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<framework:enable_max_depth>true</framework:enable_max_depth>
1414
</framework:context>
1515
</framework:serializer>
16+
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1617
</framework:messenger>
1718
</framework:config>
1819
</container>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
<framework:config>
99
<framework:serializer enabled="false" />
1010
<framework:messenger>
11-
<framework:serializer enabled="true" />
1211
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1312
</framework:messenger>
1413
</framework:config>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:serializer enabled="true" />
1211
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1312
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
1413
<framework:options>

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,5 @@
77

88
<framework:config>
99
<framework:serializer enabled="false" />
10-
<framework:messenger>
11-
<framework:serializer enabled="false" />
12-
</framework:messenger>
1310
</framework:config>
1411
</container>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
framework:
22
serializer: true
33
messenger:
4-
serializer: true
54
routing:
65
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
76
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ framework:
55
format: csv
66
context:
77
enable_max_depth: true
8+
transports:
9+
default: 'amqp://localhost/%2f/messages'

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@ framework:
22
serializer:
33
enabled: false
44
messenger:
5-
serializer:
6-
enabled: true
75
transports:
86
default: 'amqp://localhost/%2f/messages'

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
framework:
22
serializer: true
33
messenger:
4-
serializer: true
54
transports:
65
default: 'amqp://localhost/%2f/messages'
76
customised:
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
framework:
22
serializer:
33
enabled: false
4-
messenger:
5-
serializer: false

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,10 +604,9 @@ public function testMessengerTransportConfiguration()
604604
{
605605
$container = $this->createContainerFromFile('messenger_transport');
606606

607-
$this->assertSame('messenger.transport.serializer', (string) $container->getAlias('messenger.transport.encoder'));
608-
$this->assertSame('messenger.transport.serializer', (string) $container->getAlias('messenger.transport.decoder'));
607+
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.transport.serializer'));
609608

610-
$serializerTransportDefinition = $container->getDefinition('messenger.transport.serializer');
609+
$serializerTransportDefinition = $container->getDefinition('messenger.transport.symfony_serializer');
611610
$this->assertSame('csv', $serializerTransportDefinition->getArgument(1));
612611
$this->assertSame(array('enable_max_depth' => true), $serializerTransportDefinition->getArgument(2));
613612
}

src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1717
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpSender;
1818
use Symfony\Component\Messenger\Transport\AmqpExt\Connection;
19-
use Symfony\Component\Messenger\Transport\Serialization\EncoderInterface;
19+
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2020

2121
/**
2222
* @requires extension amqp
@@ -28,13 +28,13 @@ public function testItSendsTheEncodedMessage()
2828
$envelope = Envelope::wrap(new DummyMessage('Oy'));
2929
$encoded = array('body' => '...', 'headers' => array('type' => DummyMessage::class));
3030

31-
$encoder = $this->getMockBuilder(EncoderInterface::class)->getMock();
32-
$encoder->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded);
31+
$serializer = $this->getMockBuilder(SerializerInterface::class)->getMock();
32+
$serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded);
3333

3434
$connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock();
3535
$connection->expects($this->once())->method('publish')->with($encoded['body'], $encoded['headers']);
3636

37-
$sender = new AmqpSender($encoder, $connection);
37+
$sender = new AmqpSender($serializer, $connection);
3838
$sender->send($envelope);
3939
}
4040
}

src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,14 @@
1515
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport;
1616
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory;
1717
use Symfony\Component\Messenger\Transport\AmqpExt\Connection;
18-
use Symfony\Component\Messenger\Transport\Serialization\DecoderInterface;
19-
use Symfony\Component\Messenger\Transport\Serialization\EncoderInterface;
18+
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2019

2120
class AmqpTransportFactoryTest extends TestCase
2221
{
2322
public function testSupportsOnlyAmqpTransports()
2423
{
2524
$factory = new AmqpTransportFactory(
26-
$this->getMockBuilder(EncoderInterface::class)->getMock(),
27-
$this->getMockBuilder(DecoderInterface::class)->getMock(),
25+
$this->getMockBuilder(SerializerInterface::class)->getMock(),
2826
true
2927
);
3028

@@ -36,12 +34,11 @@ public function testSupportsOnlyAmqpTransports()
3634
public function testItCreatesTheTransport()
3735
{
3836
$factory = new AmqpTransportFactory(
39-
$encoder = $this->getMockBuilder(EncoderInterface::class)->getMock(),
40-
$decoder = $this->getMockBuilder(DecoderInterface::class)->getMock(),
37+
$serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(),
4138
true
4239
);
4340

44-
$expectedTransport = new AmqpTransport($encoder, $decoder, Connection::fromDsn('amqp://localhost', array('foo' => 'bar'), true), array('foo' => 'bar'), true);
41+
$expectedTransport = new AmqpTransport($serializer, Connection::fromDsn('amqp://localhost', array('foo' => 'bar'), true));
4542

4643
$this->assertEquals($expectedTransport, $factory->createTransport('amqp://localhost', array('foo' => 'bar')));
4744
}

src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportTest.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1717
use Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport;
1818
use Symfony\Component\Messenger\Transport\AmqpExt\Connection;
19-
use Symfony\Component\Messenger\Transport\Serialization\DecoderInterface;
20-
use Symfony\Component\Messenger\Transport\Serialization\EncoderInterface;
19+
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2120
use Symfony\Component\Messenger\Transport\TransportInterface;
2221

2322
/**
@@ -35,8 +34,7 @@ public function testItIsATransport()
3534
public function testReceivesMessages()
3635
{
3736
$transport = $this->getTransport(
38-
null,
39-
$decoder = $this->getMockBuilder(DecoderInterface::class)->getMock(),
37+
$serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(),
4038
$connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock()
4139
);
4240

@@ -46,7 +44,7 @@ public function testReceivesMessages()
4644
$amqpEnvelope->method('getBody')->willReturn('body');
4745
$amqpEnvelope->method('getHeaders')->willReturn(array('my' => 'header'));
4846

49-
$decoder->method('decode')->with(array('body' => 'body', 'headers' => array('my' => 'header')))->willReturn(Envelope::wrap($decodedMessage));
47+
$serializer->method('decode')->with(array('body' => 'body', 'headers' => array('my' => 'header')))->willReturn(Envelope::wrap($decodedMessage));
5048
$connection->method('get')->willReturn($amqpEnvelope);
5149

5250
$transport->receive(function (Envelope $envelope) use ($transport, $decodedMessage) {
@@ -56,12 +54,11 @@ public function testReceivesMessages()
5654
});
5755
}
5856

59-
private function getTransport(EncoderInterface $encoder = null, DecoderInterface $decoder = null, Connection $connection = null)
57+
private function getTransport(SerializerInterface $serializer = null, Connection $connection = null)
6058
{
61-
$encoder = $encoder ?: $this->getMockBuilder(EncoderInterface::class)->getMock();
62-
$decoder = $decoder ?: $this->getMockBuilder(DecoderInterface::class)->getMock();
59+
$serializer = $serializer ?: $this->getMockBuilder(SerializerInterface::class)->getMock();
6360
$connection = $connection ?: $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock();
6461

65-
return new AmqpTransport($encoder, $decoder, $connection);
62+
return new AmqpTransport($serializer, $connection);
6663
}
6764
}

0 commit comments

Comments
 (0)