Skip to content

Commit ba3adb1

Browse files
Rework
1 parent d95cef4 commit ba3adb1

File tree

11 files changed

+105
-18
lines changed

11 files changed

+105
-18
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,6 +2353,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
23532353

23542354
$defaultMiddleware = [
23552355
'before' => [
2356+
['id' => 'add_self_stampable_stamps_middleware'],
23562357
['id' => 'add_bus_name_stamp_middleware'],
23572358
['id' => 'reject_redelivered_message_middleware'],
23582359
['id' => 'dispatch_after_current_bus'],

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener;
2727
use Symfony\Component\Messenger\Handler\RedispatchMessageHandler;
2828
use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware;
29+
use Symfony\Component\Messenger\Middleware\AddSelfStampableStampsMiddleware;
2930
use Symfony\Component\Messenger\Middleware\DeduplicateMiddleware;
3031
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
3132
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
@@ -93,6 +94,8 @@
9394
service('lock.factory'),
9495
])
9596

97+
->set('messenger.middleware.add_self_stampable_stamps_middleware', AddSelfStampableStampsMiddleware::class)
98+
9699
->set('messenger.middleware.add_bus_name_stamp_middleware', AddBusNameStampMiddleware::class)
97100
->abstract()
98101

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,7 @@ public function testMessengerWithMultipleBusesWithoutDeduplicateMiddleware()
10701070
$this->assertTrue($container->has('messenger.bus.commands'));
10711071
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
10721072
$this->assertEquals([
1073+
['id' => 'add_self_stampable_stamps_middleware'],
10731074
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
10741075
['id' => 'reject_redelivered_message_middleware'],
10751076
['id' => 'dispatch_after_current_bus'],
@@ -1080,6 +1081,7 @@ public function testMessengerWithMultipleBusesWithoutDeduplicateMiddleware()
10801081
$this->assertTrue($container->has('messenger.bus.events'));
10811082
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
10821083
$this->assertEquals([
1084+
['id' => 'add_self_stampable_stamps_middleware'],
10831085
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
10841086
['id' => 'reject_redelivered_message_middleware'],
10851087
['id' => 'dispatch_after_current_bus'],
@@ -1112,6 +1114,7 @@ public function testMessengerWithAddBusNameStampMiddleware()
11121114
$this->assertTrue($container->has('messenger.bus.events'));
11131115
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
11141116
$this->assertEquals([
1117+
['id' => 'add_self_stampable_stamps_middleware'],
11151118
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
11161119
['id' => 'reject_redelivered_message_middleware'],
11171120
['id' => 'dispatch_after_current_bus'],
@@ -1132,6 +1135,7 @@ public function testMessengerWithMultipleBusesWithDeduplicateMiddleware()
11321135
$this->assertTrue($container->has('messenger.bus.commands'));
11331136
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
11341137
$this->assertEquals([
1138+
['id' => 'add_self_stampable_stamps_middleware'],
11351139
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
11361140
['id' => 'reject_redelivered_message_middleware'],
11371141
['id' => 'dispatch_after_current_bus'],
@@ -1143,6 +1147,7 @@ public function testMessengerWithMultipleBusesWithDeduplicateMiddleware()
11431147
$this->assertTrue($container->has('messenger.bus.events'));
11441148
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
11451149
$this->assertEquals([
1150+
['id' => 'add_self_stampable_stamps_middleware'],
11461151
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
11471152
['id' => 'reject_redelivered_message_middleware'],
11481153
['id' => 'dispatch_after_current_bus'],

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"symfony/http-client": "^6.4|^7.0|^8.0",
5252
"symfony/lock": "^6.4|^7.0|^8.0",
5353
"symfony/mailer": "^6.4|^7.0|^8.0",
54-
"symfony/messenger": "^6.4|^7.0|^8.0",
54+
"symfony/messenger": "^7.4|^8.0",
5555
"symfony/mime": "^6.4|^7.0|^8.0",
5656
"symfony/notifier": "^6.4|^7.0|^8.0",
5757
"symfony/object-mapper": "^7.3|^8.0",
@@ -91,7 +91,7 @@
9191
"symfony/form": "<6.4",
9292
"symfony/lock": "<6.4",
9393
"symfony/mailer": "<6.4",
94-
"symfony/messenger": "<6.4",
94+
"symfony/messenger": "<7.4",
9595
"symfony/mime": "<6.4",
9696
"symfony/property-info": "<6.4",
9797
"symfony/property-access": "<6.4",

src/Symfony/Component/Messenger/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
7.4
5+
---
6+
7+
* Add `Symfony\Component\Messenger\Middleware\AddSelfStampableStampsMiddleware` and `Symfony\Component\Messenger\Message\SelfStampableInterface`
8+
49
7.3
510
---
611

src/Symfony/Component/Messenger/Message/SelfStampableInterface.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
interface SelfStampableInterface
1717
{
1818
/**
19+
* List of stamps which will be automatically added to the envelope,
20+
* if there is no other stamp of the same class already set.
21+
*
1922
* @return array<StampInterface>
2023
*/
21-
public function getStamps(): array;
24+
public function getDefaultStamps(): array;
2225
}

src/Symfony/Component/Messenger/MessageBus.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Component\Messenger;
1313

14-
use Symfony\Component\Messenger\Message\SelfStampableInterface;
1514
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
1615
use Symfony\Component\Messenger\Middleware\StackMiddleware;
1716

@@ -54,10 +53,6 @@ public function getIterator(): \Traversable
5453

5554
public function dispatch(object $message, array $stamps = []): Envelope
5655
{
57-
if ($message instanceof SelfStampableInterface) {
58-
$stamps = array_merge($message->getStamps(), $stamps);
59-
}
60-
6156
$envelope = Envelope::wrap($message, $stamps);
6257
$middlewareIterator = $this->middlewareAggregate->getIterator();
6358

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Messenger\Middleware;
13+
14+
use Symfony\Component\Messenger\Envelope;
15+
use Symfony\Component\Messenger\Message\SelfStampableInterface;
16+
17+
/**
18+
* Automatically add stamps from the SelfStampableInterface.
19+
*/
20+
class AddSelfStampableStampsMiddleware implements MiddlewareInterface
21+
{
22+
public function handle(Envelope $envelope, StackInterface $stack): Envelope
23+
{
24+
$message = $envelope->getMessage();
25+
if ($message instanceof SelfStampableInterface) {
26+
foreach ($message->getDefaultStamps() as $stamp) {
27+
if (null === $envelope->last($stamp::class)) {
28+
$envelope = $envelope->with($stamp);
29+
}
30+
}
31+
}
32+
33+
return $stack->next()->handle($envelope, $stack);
34+
}
35+
}

src/Symfony/Component/Messenger/Tests/Fixtures/SelfStampableDummyMessage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public function getMessage(): string
1616
return $this->message;
1717
}
1818

19-
public function getStamps(): array
19+
public function getDefaultStamps(): array
2020
{
2121
return [new DelayStamp(1)];
2222
}

src/Symfony/Component/Messenger/Tests/MessageBusTest.php

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
2323
use Symfony\Component\Messenger\Tests\Fixtures\AnEnvelopeStamp;
2424
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
25-
use Symfony\Component\Messenger\Tests\Fixtures\SelfStampableDummyMessage;
2625

2726
class MessageBusTest extends TestCase
2827
{
@@ -134,14 +133,6 @@ public function testItAddsTheStampsToEnvelope()
134133
$this->assertCount(2, $finalEnvelope->all());
135134
}
136135

137-
public function testSelfStampableMessage()
138-
{
139-
$finalEnvelope = (new MessageBus())->dispatch(new SelfStampableDummyMessage(''), [new DelayStamp(5), new BusNameStamp('bar')]);
140-
$this->assertCount(2, $finalEnvelope->all());
141-
$this->assertCount(2, $finalEnvelope->all()[DelayStamp::class]);
142-
$this->assertSame(5, $finalEnvelope->last(DelayStamp::class)->getDelay());
143-
}
144-
145136
public static function provideConstructorDataStucture(): iterable
146137
{
147138
yield 'iterator' => [new \ArrayObject([

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy