8000 bug #47992 [Mailer] Fix BC breaking event name change (chalasr) · symfony/symfony@3b4cda1 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit 3b4cda1

Browse files
committed
bug #47992 [Mailer] Fix BC breaking event name change (chalasr)
This PR was merged into the 6.2 branch. Discussion ---------- [Mailer] Fix BC breaking event name change | Q | A | ------------- | --- | Branch? | 6.2 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #47989, Fix #47383 | License | MIT | Doc PR | - While I get the motivation for introducing this `QueuingMessageEvent` child event in #47191, it's a BC break that is difficult to circumvent due to the fact it's an event (the parent may still be used as it's not deprecated). So I propose to revert its addition and just add the needed stamp-related methods to the original event instead. Commits ------- cb64938 [Mailer] Fix BC breaking event name change
2 parents 934948f + cb64938 commit 3b4cda1

File tree

7 files changed

+41
-59
lines changed

7 files changed

+41
-59
lines changed

src/Symfony/Component/Mailer/Event/MessageEvent.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
namespace Symfony\Component\Mailer\Event;
1313

1414
use Symfony\Component\Mailer\Envelope;
15+
use Symfony\Component\Mailer\Exception\LogicException;
16+
use Symfony\Component\Messenger\Stamp\StampInterface;
1517
use Symfony\Component\Mime\RawMessage;
1618
use Symfony\Contracts\EventDispatcher\Event;
1719

@@ -20,13 +22,16 @@
2022
*
2123
* @author Fabien Potencier <fabien@symfony.com>
2224
*/
23-
class MessageEvent extends Event
25+
final class MessageEvent extends Event
2426
{
2527
private RawMessage $message;
2628
private Envelope $envelope;
2729
private string $transport;
2830
private bool $queued;
2931

32+
/** @var StampInterface[] */
33+
private array $stamps = [];
34+
3035
public function __construct(RawMessage $message, Envelope $envelope, string $transport, bool $queued = false)
3136
{
3237
$this->message = $message;
@@ -64,4 +69,25 @@ public function isQueued(): bool
6469
{
6570
return $this->queued;
6671
}
72+
73+
public function addStamp(StampInterface $stamp): void
74+
{
75+
if (!$this->queued) {
76+
throw new LogicException(sprintf('Cannot call "%s()" on a message that is not meant to be queued', __METHOD__));
77+
}
78+
79+
$this->stamps[] = $stamp;
80+
}
81+
82+
/**
83+
* @return StampInterface[]
84+
*/
85+
public function getStamps(): array
86+
{
87+
if (!$this->queued) {
88+
throw new LogicException(sprintf('Cannot call "%s()" on a message that is not meant to be queued.', __METHOD__));
89+
}
90+
91+
return $this->stamps;
92+
}
6793
}

src/Symfony/Component/Mailer/Event/QueuingMessageEvent.php

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/Symfony/Component/Mailer/EventListener/MessageLoggerListener.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
1515
use Symfony\Component\Mailer\Event\MessageEvent;
1616
use Symfony\Component\Mailer\Event\MessageEvents;
17-
use Symfony\Component\Mailer\Event\QueuingMessageEvent;
1817
use Symfony\Contracts\Service\ResetInterface;
1918

2019
/**
@@ -50,7 +49,6 @@ public static function getSubscribedEvents(): array
5049
{
5150
return [
5251
MessageEvent::class => ['onMessage', -255],
53-
QueuingMessageEvent::class => ['onMessage', -255],
5452
];
5553
}
5654
}

src/Symfony/Component/Mailer/EventListener/MessengerTransportListener.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Component\Mailer\EventListener;
1313

1414
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
15-
use Symfony\Component\Mailer\Event\QueuingMessageEvent;
15+
use Symfony\Component\Mailer\Event\MessageEvent;
1616
use Symfony\Component\Messenger\Stamp\TransportNamesStamp;
1717
use Symfony\Component\Mime\Message;
1818

@@ -23,8 +23,12 @@
2323
*/
2424
final class MessengerTransportListener implements EventSubscriberInterface
2525
{
26-
public function onMessage(QueuingMessageEvent $event): void
26+
public function onMessage(MessageEvent $event): void
2727
{
28+
if (!$event->isQueued()) {
29+
return;
30+
}
31+
2832
$message = $event->getMessage();
2933
if (!$message instanceof Message || !$message->getHeaders()->has('X-Bus-Transport')) {
3034
return;
@@ -39,7 +43,7 @@ public function onMessage(QueuingMessageEvent $event): void
3943
public static function getSubscribedEvents(): array
4044
{
4145
return [
42-
QueuingMessageEvent::class => 'onMessage',
46+
MessageEvent::class => 'onMessage',
4347
];
4448
}
4549
}

src/Symfony/Component/Mailer/Mailer.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Psr\EventDispatcher\EventDispatcherInterface;
1515
use Symfony\Component\Mailer\Event\MessageEvent;
16-
use Symfony\Component\Mailer\Event\QueuingMessageEvent;
1716
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
1817
use Symfony\Component\Mailer\Messenger\SendEmailMessage;
1918
use Symfony\Component\Mailer\Transport\TransportInterface;
@@ -54,7 +53,7 @@ public function send(RawMessage $message, Envelope $envelope = null): void
5453
// Listeners should act depending on the `$queued` argument of the `MessageEvent` instance.
5554
$clonedMessage = clone $message;
5655
$clonedEnvelope = null !== $envelope ? clone $envelope : Envelope::create($clonedMessage);
57-
$event = new QueuingMessageEvent($clonedMessage, $clonedEnvelope, (string) $this->transport);
56+
$event = new MessageEvent($clonedMessage, $clonedEnvelope, (string) $this->transport, true);
5857
$this->dispatcher->dispatch($event);
5958
$stamps = $event->getStamps();
6059
}

src/Symfony/Component/Mailer/Tests/EventListener/MessengerTransportListenerTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mailer\Envelope;
16-
use Symfony\Component\Mailer\Event\QueuingMessageEvent;
16+
use Symfony\Component\Mailer\Event\MessageEvent;
1717
use Symfony\Component\Mailer\EventListener\MessengerTransportListener;
1818
use Symfony\Component\Messenger\Stamp\TransportNamesStamp;
1919
use Symfony\Component\Mime\Address;
@@ -27,7 +27,7 @@ public function testNoMessengerTransportStampsByDefault()
2727
$l = new MessengerTransportListener();
2828
$envelope = new Envelope(new Address('sender@example.com'), [new Address('recipient@example.com')]);
2929
$message = new Message(new Headers());
30-
$event = new QueuingMessageEvent($message, $envelope, 'smtp');
30+
$event = new MessageEvent($message, $envelope, 'smtp', true);
3131
$l->onMessage($event);
3232
$this->assertEmpty($event->getStamps());
3333
}
@@ -38,7 +38,7 @@ public function testMessengerTransportStampViaHeader()
3838
$envelope = new Envelo 10000 pe(new Address('sender@example.com'), [new Address('recipient@example.com')]);
3939
$headers = (new Headers())->addTextHeader('X-Bus-Transport', 'async');
4040
$message = new Message($headers);
41-
$event = new QueuingMessageEvent($message, $envelope, 'smtp');
41+
$event = new MessageEvent($message, $envelope, 'smtp', true);
4242
$l->onMessage($event);
4343
$this->assertCount(1, $event->getStamps());
4444
/* @var TransportNamesStamp $stamp */
@@ -54,7 +54,7 @@ public function testMessengerTransportStampsViaHeader()
5454
$name = 'söme_very_long_and_weïrd transport name-for-messenger!';
5555
$headers = (new Headers())->addTextHeader('X-Bus-Transport', ' async , async1,'.$name);
5656
$message = new Message($headers);
57-
$event = new QueuingMessageEvent($message, $envelope, 'smtp');
57+
$event = new MessageEvent($message, $envelope, 'smtp', true);
5858
$l->onMessage($event);
5959
$this->assertCount(1, $event->getStamps());
6060
/* @var TransportNamesStamp $stamp */

src/Symfony/Component/Mailer/Tests/MailerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Psr\EventDispatcher\EventDispatcherInterface;
16-
use Symfony\Component\Mailer\Event\QueuingMessageEvent;
16+
use Symfony\Component\Mailer\Event\MessageEvent;
1717
use Symfony\Component\Mailer\Exception\LogicException;
1818
use Symfony\Component\Mailer\Mailer;
1919
use Symfony\Component\Mailer\Transport\NullTransport;
@@ -54,7 +54,7 @@ public function dispatch($message, array $stamps = []): Envelope
5454
$dispatcher = $this->createMock(EventDispatcherInterface::class);
5555
$dispatcher->expects($this->once())
5656
->method('dispatch')
57-
->with(self::callback(static function (QueuingMessageEvent $event) use ($stamp) {
57+
->with(self::callback(static function (MessageEvent $event) use ($stamp) {
5858
$event->addStamp($stamp);
5959

6060
return 'Time for Symfony Mailer!' === $event->getMessage()->getSubject();

0 commit comments

Comments
 (0)
0