From 2d55ae5212b62b2d644a441818ee4f496bb2b8bd Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 10 Sep 2018 08:16:50 +0200 Subject: [PATCH] [Messenger] changed AmqpExt classes constructor signature --- src/Symfony/Component/Messenger/CHANGELOG.md | 4 +++- .../Tests/Transport/AmqpExt/AmqpExtIntegrationTest.php | 8 ++++---- .../Tests/Transport/AmqpExt/AmqpReceiverTest.php | 6 +++--- .../Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php | 2 +- .../Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php | 2 +- .../Tests/Transport/AmqpExt/AmqpTransportTest.php | 2 +- .../Tests/Transport/AmqpExt/Fixtures/long_receiver.php | 2 +- .../Messenger/Transport/AmqpExt/AmqpReceiver.php | 5 +++-- .../Component/Messenger/Transport/AmqpExt/AmqpSender.php | 5 +++-- .../Messenger/Transport/AmqpExt/AmqpTransport.php | 9 +++++---- .../Messenger/Transport/AmqpExt/AmqpTransportFactory.php | 7 ++++--- 11 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index 7058ff726c..8a87d74bed 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -4,11 +4,13 @@ CHANGELOG 4.2.0 ----- + * [BC BREAK] The signature of Amqp* classes changed to take a `Connection` as a first argument and an optional + `Serializer` as a second argument. * [BC BREAK] `SenderLocator` has been renamed to `ContainerSenderLocator` Be careful as there is still a `SenderLocator` class, but it does not rely on a `ContainerInterface` to find senders. Instead, it accepts the sender instance itself instead of its identifier in the container. * [BC BREAK] `MessageSubscriberInterface::getHandledMessages()` return value has changed. The value of an array item - needs to be an associative array or the method name. + needs to be an associative array or the method name. * `ValidationMiddleware::handle()` and `SendMessageMiddleware::handle()` now require an `Envelope` object * `EnvelopeItemInterface` doesn't extend `Serializable` anymore * [BC BREAK] The `ConsumeMessagesCommand` class now takes an instance of `Psr\Container\ContainerInterface` diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpExtIntegrationTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpExtIntegrationTest.php index 7638ebba2f..173fc6d95a 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpExtIntegrationTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpExtIntegrationTest.php @@ -48,8 +48,8 @@ class AmqpExtIntegrationTest extends TestCase $connection->setup(); $connection->queue()->purge(); - $sender = new AmqpSender($serializer, $connection); - $receiver = new AmqpReceiver($serializer, $connection); + $sender = new AmqpSender($connection, $serializer); + $receiver = new AmqpReceiver($connection, $serializer); $sender->send($first = Envelope::wrap(new DummyMessage('First'))); $sender->send($second = Envelope::wrap(new DummyMessage('Second'))); @@ -74,7 +74,7 @@ class AmqpExtIntegrationTest extends TestCase $connection->setup(); $connection->queue()->purge(); - $sender = new AmqpSender($serializer, $connection); + $sender = new AmqpSender($connection, $serializer); $sender->send(Envelope::wrap(new DummyMessage('Hello'))); $amqpReadTimeout = 30; @@ -123,7 +123,7 @@ TXT $connection->setup(); $connection->queue()->purge(); - $receiver = new AmqpReceiver($serializer, $connection); + $receiver = new AmqpReceiver($connection, $serializer); $receivedMessages = 0; $receiver->receive(function (?Envelope $envelope) use ($receiver, &$receivedMessages) { diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpReceiverTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpReceiverTest.php index 5666598337..5c7ec02e57 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpReceiverTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpReceiverTest.php @@ -44,7 +44,7 @@ class AmqpReceiverTest extends TestCase $connection->expects($this->once())->method('ack')->with($envelope); - $receiver = new AmqpReceiver($serializer, $connection); + $receiver = new AmqpReceiver($connection, $serializer); $receiver->receive(function (?Envelope $envelope) use ($receiver) { $this->assertEquals(new DummyMessage('Hi'), $envelope->getMessage()); $receiver->stop(); @@ -71,7 +71,7 @@ class AmqpReceiverTest extends TestCase $connection->expects($this->once())->method('nack')->with($envelope); - $receiver = new AmqpReceiver($serializer, $connection); + $receiver = new AmqpReceiver($connection, $serializer); $receiver->receive(function () { throw new InterruptException('Well...'); }); @@ -96,7 +96,7 @@ class AmqpReceiverTest extends TestCase $connection->method('get')->willReturn($envelope); $connection->expects($this->once())->method('reject')->with($envelope); - $receiver = new AmqpReceiver($serializer, $connection); + $receiver = new AmqpReceiver($connection, $serializer); $receiver->receive(function () { throw new WillNeverWorkException('Well...'); }); diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php index 06d76bb53a..a6a3a14422 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpSenderTest.php @@ -34,7 +34,7 @@ class AmqpSenderTest extends TestCase $connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); $connection->expects($this->once())->method('publish')->with($encoded['body'], $encoded['headers']); - $sender = new AmqpSender($serializer, $connection); + $sender = new AmqpSender($connection, $serializer); $sender->send($envelope); } } diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php index c414907fa3..c36cc3eafd 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportFactoryTest.php @@ -38,7 +38,7 @@ class AmqpTransportFactoryTest extends TestCase true ); - $expectedTransport = new AmqpTransport($serializer, Connection::fromDsn('amqp://localhost', array('foo' => 'bar'), true)); + $expectedTransport = new AmqpTransport(Connection::fromDsn('amqp://localhost', array('foo' => 'bar'), true), $serializer); $this->assertEquals($expectedTransport, $factory->createTransport('amqp://localhost', array('foo' => 'bar'))); } diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportTest.php index d4b82228f2..e605b4ce9b 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpTransportTest.php @@ -59,6 +59,6 @@ class AmqpTransportTest extends TestCase $serializer = $serializer ?: $this->getMockBuilder(SerializerInterface::class)->getMock(); $connection = $connection ?: $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); - return new AmqpTransport($serializer, $connection); + return new AmqpTransport($connection, $serializer); } } diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/Fixtures/long_receiver.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/Fixtures/long_receiver.php index b7231a5d47..ca491c4180 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/Fixtures/long_receiver.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/Fixtures/long_receiver.php @@ -26,7 +26,7 @@ $serializer = new Serializer( ); $connection = Connection::fromDsn(getenv('DSN')); -$receiver = new AmqpReceiver($serializer, $connection); +$receiver = new AmqpReceiver($connection, $serializer); $worker = new Worker($receiver, new class() implements MessageBusInterface { public function dispatch($envelope) diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpReceiver.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpReceiver.php index c2daa60a1c..aa39c34fbc 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpReceiver.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpReceiver.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Messenger\Transport\AmqpExt; use Symfony\Component\Messenger\Transport\AmqpExt\Exception\RejectMessageExceptionInterface; use Symfony\Component\Messenger\Transport\ReceiverInterface; +use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; /** @@ -26,10 +27,10 @@ class AmqpReceiver implements ReceiverInterface private $connection; private $shouldStop; - public function __construct(SerializerInterface $serializer, Connection $connection) + public function __construct(Connection $connection, SerializerInterface $serializer = null) { - $this->serializer = $serializer; $this->connection = $connection; + $this->serializer = $serializer ?? Serializer::create(); } /** diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpSender.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpSender.php index ca5e84fb24..bb084a8f03 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpSender.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpSender.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Messenger\Transport\AmqpExt; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Transport\SenderInterface; +use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; /** @@ -25,10 +26,10 @@ class AmqpSender implements SenderInterface private $serializer; private $connection; - public function __construct(SerializerInterface $serializer, Connection $connection) + public function __construct(Connection $connection, SerializerInterface $serializer = null) { - $this->serializer = $serializer; $this->connection = $connection; + $this->serializer = $serializer ?? Serializer::create(); } /** diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransport.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransport.php index 7d5307fc7b..0a93d1955a 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransport.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransport.php @@ -12,6 +12,7 @@ namespace Symfony\Component\Messenger\Transport\AmqpExt; use Symfony\Component\Messenger\Envelope; +use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; use Symfony\Component\Messenger\Transport\TransportInterface; @@ -25,10 +26,10 @@ class AmqpTransport implements TransportInterface private $receiver; private $sender; - public function __construct(SerializerInterface $serializer, Connection $connection) + public function __construct(Connection $connection, SerializerInterface $serializer = null) { - $this->serializer = $serializer; $this->connection = $connection; + $this->serializer = $serializer ?? Serializer::create(); } /** @@ -57,11 +58,11 @@ class AmqpTransport implements TransportInterface private function getReceiver() { - return $this->receiver = new AmqpReceiver($this->serializer, $this->connection); + return $this->receiver = new AmqpReceiver($this->connection, $this->serializer); } private function getSender() { - return $this->sender = new AmqpSender($this->serializer, $this->connection); + return $this->sender = new AmqpSender($this->connection, $this->serializer); } } diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransportFactory.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransportFactory.php index 0405f7ce99..532a65d6bc 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransportFactory.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpTransportFactory.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Messenger\Transport\AmqpExt; +use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; use Symfony\Component\Messenger\Transport\TransportFactoryInterface; use Symfony\Component\Messenger\Transport\TransportInterface; @@ -23,15 +24,15 @@ class AmqpTransportFactory implements TransportFactoryInterface private $serializer; private $debug; - public function __construct(SerializerInterface $serializer, bool $debug) + public function __construct(SerializerInterface $serializer = null, bool $debug = false) { - $this->serializer = $serializer; + $this->serializer = $serializer ?? Serializer::create(); $this->debug = $debug; } public function createTransport(string $dsn, array $options): TransportInterface { - return new AmqpTransport($this->serializer, Connection::fromDsn($dsn, $options, $this->debug)); + return new AmqpTransport(Connection::fromDsn($dsn, $options, $this->debug), $this->serializer); } public function supports(string $dsn, array $options): bool