Skip to content

Commit

Permalink
Changed messenger.transport.serializer to messenger.default_serialize…
Browse files Browse the repository at this point in the history
…r + reorganized messenger serializer config
  • Loading branch information
weaverryan committed Mar 31, 2019
1 parent 4feff54 commit 7b66e39
Show file tree
Hide file tree
Showing 19 changed files with 44 additions and 52 deletions.
11 changes: 9 additions & 2 deletions src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,18 @@ CHANGELOG
* Not passing the project directory to the constructor of the `AssetsInstallCommand` is deprecated. This argument will
be mandatory in 5.0.
* Deprecated the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead
* Added the ability to specify a custom `serializer` option for each
transport under`framework.messenger.transports`.
* [BC Break] When using Messenger, the default transport changed from
using Symfony's serializer service to use `PhpSerializer`, which uses
PHP's native `serialize()` and `unserialize()` functions. To use the
original serialization method, set the `framework.messenger.serializer.id`
config option to `messenger.transport.symfony_serializer`.
original serialization method, set the `framework.messenger.defaut_serializer`
config option to `messenger.transport.symfony_serializer`. Or set the
`serializer` option under one specific `transport`.
* [BC Break] The `framework.messenger.serializer` config key changed to
`framework.messenger.default_serializer`, which holds the string service
id and `framework.messenger.symfony_serializer`, which configures the
options if you're using Symfony's serializer.
* Added information about deprecated aliases in `debug:autowiring`
* Added php ini session options `sid_length` and `sid_bits_per_character`
to the `session` section of the configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1107,29 +1107,19 @@ function ($a) {
->end()
->end()
->end()
->arrayNode('serializer')
->scalarNode('default_serializer')
->defaultValue('messenger.transport.native_php_serializer')
->info('Service id to use as the default serializer for the transports.')
->end()
->arrayNode('symfony_serializer')
->addDefaultsIfNotSet()
->beforeNormalization()
->always()
->then(function ($config) {
if (false === $config) {
return ['id' => null];
}

if (\is_string($config)) {
return ['id' => $config];
}

return $config;
})
->end()
->children()
->scalarNode('id')->defaultValue('messenger.transport.native_php_serializer')->end()
->scalarNode('format')->defaultValue('json')->end()
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
->arrayNode('context')
->normalizeKeys(false)
->useAttributeAsKey('name')
->defaultValue([])
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
->prototype('variable')->end()
->end()
->end()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1659,18 +1659,15 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
$container->removeDefinition('messenger.transport.amqp.factory');
} else {
$container->getDefinition('messenger.transport.symfony_serializer')
->replaceArgument(1, $config['serializer']['format'])
->replaceArgument(2, $config['serializer']['context']);
$container->setAlias('messenger.transport.serializer', $config['serializer']['id']);
->replaceArgument(1, $config['symfony_serializer']['format'])
->replaceArgument(2, $config['symfony_serializer']['context']);
$container->setAlias('messenger.default_serializer', $config['default_serializer']);
}

$senderAliases = [];
$transportRetryReferences = [];
foreach ($config['transports'] as $name => $transport) {
if (null !== $transport['serializer']) {
$transport['options']['serializer'] = new Reference($transport['serializer']);
}
$serializerId = null !== $transport['serializer'] ? $transport['serializer'] : 'messenger.transport.serializer';
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';

$transportDefinition = (new Definition(TransportInterface::class))
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<argument /> <!-- Format -->
<argument type="collection" /> <!-- Context -->
</service>
<service id="Symfony\Component\Messenger\Transport\Serialization\SerializerInterface" alias="messenger.transport.serializer" />
<service id="Symfony\Component\Messenger\Transport\Serialization\SerializerInterface" alias="messenger.default_serializer" />

<service id="messenger.transport.native_php_serializer" class="Symfony\Component\Messenger\Transport\Serialization\PhpSerializer" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,8 @@

<xsd:complexType name="messenger">
<xsd:sequence>
<xsd:element name="serializer" type="messenger_serializer" minOccurs="0" />
<xsd:element name="default-serializer" type="xsd:string" minOccurs="0" />
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
<xsd:element name="encoder" type="xsd:string" minOccurs="0" />
<xsd:element name="decoder" type="xsd:string" minOccurs="0" />
<xsd:element name="routing" type="messenger_routing" minOccurs="0" maxOccurs="unbounded" />
Expand All @@ -412,12 +413,11 @@
<xsd:attribute name="default-bus" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="messenger_serializer">
<xsd:complexType name="messenger_symfony_serializer">
<xsd:sequence>
<xsd:element name="context" type="metadata" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="format" type="xsd:string" />
<xsd:attribute name="id" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="messenger_routing">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,8 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
'enabled' => !class_exists(FullStack::class) && interface_exists(MessageBusInterface::class),
'routing' => [],
'transports' => [],
'serializer' => [
'id' => 'messenger.transport.native_php_serializer',
'default_serializer' => 'messenger.transport.native_php_serializer',
'symfony_serializer' => [
'format' => 'json',
'context' => [],
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

$container->loadFromExtension('framework', [
'messenger' => [
'serializer' => false,
'default_serializer' => false,
'routing' => [
FooMessage::class => ['sender.bar', 'sender.biz'],
BarMessage::class => 'sender.foo',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'serializer' => 'messenger.transport.symfony_serializer',
'default_serializer' => 'messenger.transport.symfony_serializer',
'routing' => [
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => ['amqp', 'audit'],
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'serializer' => [
'id' => 'messenger.transport.symfony_serializer',
'default_serializer' => 'messenger.transport.symfony_serializer',
'symfony_serializer' => [
'format' => 'csv',
'context' => ['enable_max_depth' => true],
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'serializer' => 'messenger.transport.symfony_serializer',
'default_serializer' => 'messenger.transport.symfony_serializer',
'transports' => [
'default' => 'amqp://localhost/%2f/messages',
'customised' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:serializer id="messenger.transport.symfony_serializer" />
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
<framework:sender service="amqp" />
<framework:sender service="audit" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:serializer id="messenger.transport.symfony_serializer" format="csv">
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:symfony-serializer format="csv">
<framework:context>
<framework:enable_max_depth>true</framework:enable_max_depth>
</framework:context>
</framework:serializer>
</framework:symfony-serializer>
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
</framework:messenger>
</framework:config>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:serializer id="messenger.transport.symfony_serializer" />
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name" serializer="messenger.transport.native_php_serializer">
<framework:options>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
framework:
messenger:
serializer: false
default_serializer: false
routing:
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
framework:
serializer: true
messenger:
serializer: messenger.transport.symfony_serializer
default_serializer: messenger.transport.symfony_serializer
routing:
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
framework:
serializer: true
messenger:
serializer:
id: messenger.transport.symfony_serializer
default_serializer: messenger.transport.symfony_serializer
symfony_serializer:
format: csv
context:
enable_max_depth: true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
framework:
serializer: true
messenger:
serializer: messenger.transport.symfony_serializer
default_serializer: messenger.transport.symfony_serializer
transports:
default: 'amqp://localhost/%2f/messages'
customised:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -662,14 +662,14 @@ public function testMessengerTransports()
$this->assertTrue($container->getDefinition('messenger.transport.default')->hasTag('messenger.receiver'));
$this->assertEquals([['alias' => 'default']], $container->getDefinition('messenger.transport.default')->getTag('messenger.receiver'));
$transportArguments = $container->getDefinition('messenger.transport.default')->getArguments();
$this->assertEquals(new Reference('messenger.transport.serializer'), $transportArguments[2]);
$this->assertEquals(new Reference('messenger.default_serializer'), $transportArguments[2]);

$this->assertTrue($container->hasDefinition('messenger.transport.customised'));
$transportFactory = $container->getDefinition('messenger.transport.customised')->getFactory();
$transportArguments = $container->getDefinition('messenger.transport.customised')->getArguments();

$this->assertEquals([new Reference('messenger.transport_factory'), 'createTransport'], $transportFactory);
$this->assertCount(2, $transportArguments);
$this->assertCount(3, $transportArguments);
$this->assertSame('amqp://localhost/%2f/messages?exchange_name=exchange_name', $transportArguments[0]);
$this->assertEquals(['queue' => ['name' => 'Queue']], $transportArguments[1]);
$this->assertEquals(new Reference('messenger.transport.native_php_serializer'), $transportArguments[2]);
Expand Down Expand Up @@ -700,7 +700,7 @@ public function testMessengerTransportConfiguration()
{
$container = $this->createContainerFromFile('messenger_transport');

$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.transport.serializer'));
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.default_serializer'));

$serializerTransportDefinition = $container->getDefinition('messenger.transport.symfony_serializer');
$this->assertSame('csv', $serializerTransportDefinition->getArgument(1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@
*/
interface TransportFactoryInterface
{
/**
* Creates a new transport using the dsn, options & serializer.
*/
public function createTransport(string $dsn, array $options, SerializerInterface $serializer): TransportInterface;

public function supports(string $dsn, array $options): bool;
Expand Down

0 comments on commit 7b66e39

Please sign in to comment.