From 5701e8996050cc4536956603e8fdf662cee25f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Sch=C3=A4dlich?= Date: Wed, 7 Oct 2020 22:00:36 +0200 Subject: [PATCH] Introduce NullMessage and remove transport setter in MessageInterface --- .../Notifier/Message/ChatMessage.php | 2 +- .../Notifier/Message/EmailMessage.php | 2 +- .../Notifier/Message/MessageInterface.php | 2 - .../Notifier/Message/NullMessage.php | 47 +++++++++++++++++++ .../Component/Notifier/Message/SmsMessage.php | 2 +- .../Notifier/Transport/NullTransport.php | 5 +- .../Notifier/Transport/Transports.php | 2 - 7 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 src/Symfony/Component/Notifier/Message/NullMessage.php diff --git a/src/Symfony/Component/Notifier/Message/ChatMessage.php b/src/Symfony/Component/Notifier/Message/ChatMessage.php index 2c3cfe13cc7eb..5fc1d94a3a322 100644 --- a/src/Symfony/Component/Notifier/Message/ChatMessage.php +++ b/src/Symfony/Component/Notifier/Message/ChatMessage.php @@ -77,7 +77,7 @@ public function getOptions(): ?MessageOptionsInterface /** * @return $this */ - public function transport(?string $transport): MessageInterface + public function transport(?string $transport): self { $this->transport = $transport; diff --git a/src/Symfony/Component/Notifier/Message/EmailMessage.php b/src/Symfony/Component/Notifier/Message/EmailMessage.php index ab3efed253e59..199030e775f98 100644 --- a/src/Symfony/Component/Notifier/Message/EmailMessage.php +++ b/src/Symfony/Component/Notifier/Message/EmailMessage.php @@ -102,7 +102,7 @@ public function getOptions(): ?MessageOptionsInterface /** * @return $this */ - public function transport(string $transport): MessageInterface + public function transport(string $transport): self { if (!$this->message instanceof Email) { throw new LogicException('Cannot set a Transport on a RawMessage instance.'); diff --git a/src/Symfony/Component/Notifier/Message/MessageInterface.php b/src/Symfony/Component/Notifier/Message/MessageInterface.php index 146e721ff79f3..9684813465297 100644 --- a/src/Symfony/Component/Notifier/Message/MessageInterface.php +++ b/src/Symfony/Component/Notifier/Message/MessageInterface.php @@ -25,6 +25,4 @@ public function getSubject(): string; public function getOptions(): ?MessageOptionsInterface; public function getTransport(): ?string; - - public function transport(string $transport): self; } diff --git a/src/Symfony/Component/Notifier/Message/NullMessage.php b/src/Symfony/Component/Notifier/Message/NullMessage.php new file mode 100644 index 0000000000000..3fd59de62e84c --- /dev/null +++ b/src/Symfony/Component/Notifier/Message/NullMessage.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Notifier\Message; + +/** + * @author Jan Schädlich + * + * @experimental in 5.2 + */ +final class NullMessage implements MessageInterface +{ + private $decoratedMessage; + + public function __construct(MessageInterface $message) + { + $this->decoratedMessage = $message; + } + + public function getRecipientId(): ?string + { + return $this->decoratedMessage->getRecipientId(); + } + + public function getSubject(): string + { + return $this->decoratedMessage->getSubject(); + } + + public function getOptions(): ?MessageOptionsInterface + { + return $this->decoratedMessage->getOptions(); + } + + public function getTransport(): ?string + { + return $this->decoratedMessage->getTransport() ?? 'null'; + } +} diff --git a/src/Symfony/Component/Notifier/Message/SmsMessage.php b/src/Symfony/Component/Notifier/Message/SmsMessage.php index 17f0b19a4e518..30d374f4283ca 100644 --- a/src/Symfony/Component/Notifier/Message/SmsMessage.php +++ b/src/Symfony/Component/Notifier/Message/SmsMessage.php @@ -83,7 +83,7 @@ public function getSubject(): string /** * @return $this */ - public function transport(string $transport): MessageInterface + public function transport(string $transport): self { $this->transport = $transport; diff --git a/src/Symfony/Component/Notifier/Transport/NullTransport.php b/src/Symfony/Component/Notifier/Transport/NullTransport.php index c27167653769c..10e36f7012853 100644 --- a/src/Symfony/Component/Notifier/Transport/NullTransport.php +++ b/src/Symfony/Component/Notifier/Transport/NullTransport.php @@ -15,6 +15,7 @@ use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; use Symfony\Component\Notifier\Event\MessageEvent; use Symfony\Component\Notifier\Message\MessageInterface; +use Symfony\Component\Notifier\Message\NullMessage; use Symfony\Component\Notifier\Message\SentMessage; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; @@ -34,9 +35,7 @@ public function __construct(EventDispatcherInterface $dispatcher = null) public function send(MessageInterface $message): SentMessage { - if (null === $message->getTransport()) { - $message->transport((string) $this); - } + $message = new NullMessage($message); if (null !== $this->dispatcher) { $this->dispatcher->dispatch(new MessageEvent($message)); diff --git a/src/Symfony/Component/Notifier/Transport/Transports.php b/src/Symfony/Component/Notifier/Transport/Transports.php index da63d1f069a0e..2bafd23376aa9 100644 --- a/src/Symfony/Component/Notifier/Transport/Transports.php +++ b/src/Symfony/Component/Notifier/Transport/Transports.php @@ -57,8 +57,6 @@ public function send(MessageInterface $message): SentMessage if (!$transport = $message->getTransport()) { foreach ($this->transports as $transportName => $transport) { if ($transport->supports($message)) { - $message->transport($transportName); - return $transport->send($message); } }