Skip to content

Commit b8cfdb1

Browse files
[Messenger] remove AllowNoHandlerMiddleware in favor of a constructor argument on HandleMessageMiddleware
1 parent 40d77ce commit b8cfdb1

File tree

8 files changed

+32
-21
lines changed

8 files changed

+32
-21
lines changed

DependencyInjection/Configuration.php

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,19 +1081,20 @@ function ($a) {
10811081
->arrayNode('buses')
10821082
->defaultValue(array('messenger.bus.default' => array('default_middleware' => true, 'middleware' => array())))
10831083
->useAttributeAsKey('name')
1084-
->prototype('array')
1084+
->arrayPrototype()
10851085
->addDefaultsIfNotSet()
10861086
->children()
1087-
->booleanNode('default_middleware')->defaultTrue()->end()
1087+
->enumNode('default_middleware')
1088+
->values(array(true, false, 'allow_no_handlers'))
1089+
->defaultTrue()
1090+
->end()
10881091
->arrayNode('middleware')
10891092
->beforeNormalization()
1090-
->ifString()
1091-
->then(function (string $middleware) {
1092-
return array($middleware);
1093-
})
1093+
->ifTrue(function ($v) { return \is_string($v) || !\is_int(key($v)); })
1094+
->then(function ($v) { return array($v); })
10941095
->end()
10951096
->defaultValue(array())
1096-
->prototype('array')
1097+
->arrayPrototype()
10971098
->beforeNormalization()
10981099
->always()
10991100
->then(function ($middleware): array {
@@ -1103,8 +1104,8 @@ function ($a) {
11031104
if (isset($middleware['id'])) {
11041105
return $middleware;
11051106
}
1106-
if (\count($middleware) > 1) {
1107-
throw new \InvalidArgumentException(sprintf('There is an error at path "framework.messenger" in one of the buses middleware definitions: expected a single entry for a middleware item config, with factory id as key and arguments as value. Got "%s".', json_encode($middleware)));
1107+
if (1 < \count($middleware)) {
1108+
throw new \InvalidArgumentException(sprintf('Invalid middleware at path "framework.messenger": a map with a single factory id as key and its arguments as value was expected, %s given.', json_encode($middleware)));
11081109
}
11091110

11101111
return array(

DependencyInjection/FrameworkExtension.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1524,7 +1524,16 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
15241524
'after' => array(array('id' => 'route_messages'), array('id' => 'call_message_handler')),
15251525
);
15261526
foreach ($config['buses'] as $busId => $bus) {
1527-
$middleware = $bus['default_middleware'] ? array_merge($defaultMiddleware['before'], $bus['middleware'], $defaultMiddleware['after']) : $bus['middleware'];
1527+
$middleware = $bus['middleware'];
1528+
1529+
if ($bus['default_middleware']) {
1530+
if ('allow_no_handlers' === $bus['default_middleware']) {
1531+
$defaultMiddleware['after'][1]['arguments'] = array(true);
1532+
} else {
1533+
unset($defaultMiddleware['after'][1]['arguments']);
1534+
}
1535+
$middleware = array_merge($defaultMiddleware['before'], $middleware, $defaultMiddleware['after']);
1536+
}
15281537

15291538
foreach ($middleware as $middlewareItem) {
15301539
if (!$validationConfig['enabled'] && 'messenger.middleware.validation' === $middlewareItem['id']) {

Resources/config/messenger.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
</service>
2626

2727
<!-- Middleware -->
28-
<service id="messenger.middleware.allow_no_handler" class="Symfony\Component\Messenger\Middleware\AllowNoHandlerMiddleware" abstract="true" />
2928
<service id="messenger.middleware.call_message_handler" class="Symfony\Component\Messenger\Middleware\HandleMessageMiddleware" abstract="true">
3029
<argument /> <!-- Bus handler resolver -->
3130
</service>

Resources/config/schema/symfony-1.0.xsd

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,16 @@
331331
</xsd:sequence>
332332
</xsd:complexType>
333333

334+
<xsd:simpleType name="default_middleware">
335+
<xsd:restriction base="xsd:string">
336+
<xsd:enumeration value="true" />
337+
<xsd:enumeration value="false" />
338+
<xsd:enumeration value="1" />
339+
<xsd:enumeration value="0" />
340+
<xsd:enumeration value="allow_no_handlers" />
341+
</xsd:restriction>
342+
</xsd:simpleType>
343+
334344
<xsd:simpleType name="cookie_secure">
335345
<xsd:restriction base="xsd:string">
336346
<xsd:enumeration value="true" />
@@ -408,7 +418,7 @@
408418
<xsd:element name="middleware" type="messenger_middleware" minOccurs="0" maxOccurs="unbounded" />
409419
</xsd:sequence>
410420
<xsd:attribute name="name" type="xsd:string" use="required"/>
411-
<xsd:attribute name="default-middleware" type="xsd:boolean"/>
421+
<xsd:attribute name="default-middleware" type="default_middleware"/>
412422
</xsd:complexType>
413423

414424
<xsd:complexType name="messenger_middleware">

Tests/DependencyInjection/Fixtures/php/messenger_multiple_buses.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88
'messenger.bus.events' => array(
99
'middleware' => array(
1010
array('with_factory' => array('foo', true, array('bar' => 'baz'))),
11-
'allow_no_handler',
1211
),
1312
),
1413
'messenger.bus.queries' => array(
1514
'default_middleware' => false,
1615
'middleware' => array(
1716
'route_messages',
18-
'allow_no_handler',
1917
'call_message_handler',
2018
),
2119
),

Tests/DependencyInjection/Fixtures/xml/messenger_multiple_buses.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616
<framework:bar>baz</framework:bar>
1717
</framework:argument>
1818
</framework:middleware>
19-
<framework:middleware id="allow_no_handler" />
2019
</framework:bus>
2120
<framework:bus name="messenger.bus.queries" default-middleware="false">
2221
<framework:middleware id="route_messages" />
23-
<framework:middleware id="allow_no_handler" />
2422
<framework:middleware id="call_message_handler" />
2523
</framework:bus>
2624
</framework:messenger>

Tests/DependencyInjection/Fixtures/yml/messenger_multiple_buses.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ framework:
66
messenger.bus.events:
77
middleware:
88
- with_factory: [foo, true, { bar: baz }]
9-
- "allow_no_handler"
109
messenger.bus.queries:
1110
default_middleware: false
1211
middleware:
1312
- "route_messages"
14-
- "allow_no_handler"
1513
- "call_message_handler"

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -627,15 +627,13 @@ public function testMessengerWithMultipleBuses()
627627
$this->assertEquals(array(
628628
array('id' => 'logging'),
629629
array('id' => 'with_factory', 'arguments' => array('foo', true, array('bar' => 'baz'))),
630-
array('id' => 'allow_no_handler', 'arguments' => array()),
631630
array('id' => 'route_messages'),
632631
array('id' => 'call_message_handler'),
633632
), $container->getParameter('messenger.bus.events.middleware'));
634633
$this->assertTrue($container->has('messenger.bus.queries'));
635634
$this->assertSame(array(), $container->getDefinition('messenger.bus.queries')->getArgument(0));
636635
$this->assertEquals(array(
637636
array('id' => 'route_messages', 'arguments' => array()),
638-
array('id' => 'allow_no_handler', 'arguments' => array()),
639637
array('id' => 'call_message_handler', 'arguments' => array()),
640638
), $container->getParameter('messenger.bus.queries.middleware'));
641639

@@ -645,7 +643,7 @@ public function testMessengerWithMultipleBuses()
645643

646644
/**
647645
* @expectedException \InvalidArgumentException
648-
* @expectedExceptionMessage There is an error at path "framework.messenger" in one of the buses middleware definitions: expected a single entry for a middleware item config, with factory id as key and arguments as value. Got "{"foo":["qux"],"bar":["baz"]}"
646+
* @expectedExceptionMessage Invalid middleware at path "framework.messenger": a map with a single factory id as key and its arguments as value was expected, {"foo":["qux"],"bar":["baz"]} given.
649647
*/
650648
public function testMessengerMiddlewareFactoryErroneousFormat()
651649
{

0 commit comments

Comments
 (0)