Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4a7e6fa

Browse files
committed
Merge branch '4.1'
* 4.1: [Messenger] Middleware factories support in config [HttpKernel] Make TraceableValueResolver $stopwatch mandatory [Messenger] Improve the profiler panel [Workflow] Added DefinitionBuilder::setMetadataStore(). [Messenger][DX] Uses custom method names for handlers [Messenger] remove autoconfiguration for Sender/ReceiverInterface [Messenger] Make sure default receiver name is set before command configuration [HttpKernel] Fix services are no longer injected into __invoke controllers method Rename tag attribute "name" by "alias" Autoconfiguring TransportFactoryInterface classes [Messenger] Fix new AMQP Transport test with Envelope Fixed return senders based on the message parents/interfaces [Messenger] Make sure Sender and Receiver locators have valid services [Workflow] add is deprecated since Symfony 4.1. Use addWorkflow() instead [Messenger] Fix TraceableBus with envelope Ensure the envelope is passed back and can be altered Ensure that the middlewares can also update the message within the envelope feature#26945 [Messenger] Support configuring messages when dispatching (ogizanagi) Add more tests around the AMQP transport
2 parents784a7ac +f59ce97 commit4a7e6fa

File tree

77 files changed

+1806
-326
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1806
-326
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
namespaceSymfony\Bridge\Doctrine\Messenger;
13+
14+
useSymfony\Bridge\Doctrine\ManagerRegistry;
15+
16+
/**
17+
* Create a Doctrine ORM transaction middleware to be used in a message bus from an entity manager name.
18+
*
19+
* @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
20+
*
21+
* @experimental in 4.1
22+
* @final
23+
*/
24+
class DoctrineTransactionMiddlewareFactory
25+
{
26+
private$managerRegistry;
27+
28+
publicfunction__construct(ManagerRegistry$managerRegistry)
29+
{
30+
$this->managerRegistry =$managerRegistry;
31+
}
32+
33+
publicfunctioncreateMiddleware(string$managerName):DoctrineTransactionMiddleware
34+
{
35+
returnnewDoctrineTransactionMiddleware($this->managerRegistry,$managerName);
36+
}
37+
}

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php‎

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,36 @@ function ($a) {
10611061
})
10621062
->end()
10631063
->defaultValue(array())
1064-
->prototype('scalar')->end()
1064+
->prototype('array')
1065+
->beforeNormalization()
1066+
->always()
1067+
->then(function ($middleware):array {
1068+
if (!\is_array($middleware)) {
1069+
returnarray('id' =>$middleware);
1070+
}
1071+
if (isset($middleware['id'])) {
1072+
return$middleware;
1073+
}
1074+
if (\count($middleware) >1) {
1075+
thrownew \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)));
1076+
}
1077+
1078+
returnarray(
1079+
'id' =>key($middleware),
1080+
'arguments' =>current($middleware),
1081+
);
1082+
})
1083+
->end()
1084+
->fixXmlConfig('argument')
1085+
->children()
1086+
->scalarNode('id')->isRequired()->cannotBeEmpty()->end()
1087+
->arrayNode('arguments')
1088+
->normalizeKeys(false)
1089+
->defaultValue(array())
1090+
->prototype('variable')
1091+
->end()
1092+
->end()
1093+
->end()
10651094
->end()
10661095
->end()
10671096
->end()

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

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@
6363
useSymfony\Component\Messenger\Handler\MessageHandlerInterface;
6464
useSymfony\Component\Messenger\MessageBus;
6565
useSymfony\Component\Messenger\MessageBusInterface;
66-
useSymfony\Component\Messenger\Transport\ReceiverInterface;
67-
useSymfony\Component\Messenger\Transport\SenderInterface;
66+
useSymfony\Component\Messenger\Transport\TransportFactoryInterface;
6867
useSymfony\Component\Messenger\Transport\TransportInterface;
6968
useSymfony\Component\PropertyAccess\PropertyAccessor;
7069
useSymfony\Component\PropertyInfo\PropertyAccessExtractorInterface;
@@ -343,12 +342,10 @@ public function load(array $configs, ContainerBuilder $container)
343342
->addTag('validator.constraint_validator');
344343
$container->registerForAutoconfiguration(ObjectInitializerInterface::class)
345344
->addTag('validator.initializer');
346-
$container->registerForAutoconfiguration(ReceiverInterface::class)
347-
->addTag('messenger.receiver');
348-
$container->registerForAutoconfiguration(SenderInterface::class)
349-
->addTag('messenger.sender');
350345
$container->registerForAutoconfiguration(MessageHandlerInterface::class)
351346
->addTag('messenger.message_handler');
347+
$container->registerForAutoconfiguration(TransportFactoryInterface::class)
348+
->addTag('messenger.transport_factory');
352349

353350
if (!$container->getParameter('kernel.debug')) {
354351
// remove tagged iterator argument for resource checkers
@@ -573,10 +570,10 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
573570
foreach ($workflow['supports']as$supportedClassName) {
574571
$strategyDefinition =newDefinition(Workflow\SupportStrategy\InstanceOfSupportStrategy::class,array($supportedClassName));
575572
$strategyDefinition->setPublic(false);
576-
$registryDefinition->addMethodCall('add',array(newReference($workflowId),$strategyDefinition));
573+
$registryDefinition->addMethodCall('addWorkflow',array(newReference($workflowId),$strategyDefinition));
577574
}
578575
}elseif (isset($workflow['support_strategy'])) {
579-
$registryDefinition->addMethodCall('add',array(newReference($workflowId),newReference($workflow['support_strategy'])));
576+
$registryDefinition->addMethodCall('addWorkflow',array(newReference($workflowId),newReference($workflow['support_strategy'])));
580577
}
581578

582579
// Enable the AuditTrail
@@ -1471,12 +1468,17 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
14711468
$config['default_bus'] =key($config['buses']);
14721469
}
14731470

1474-
$defaultMiddleware =array('before' =>array('logging'),'after' =>array('route_messages','call_message_handler'));
1471+
$defaultMiddleware =array(
1472+
'before' =>array(array('id' =>'logging')),
1473+
'after' =>array(array('id' =>'route_messages'),array('id' =>'call_message_handler')),
1474+
);
14751475
foreach ($config['buses']as$busId =>$bus) {
14761476
$middleware =$bus['default_middleware'] ?array_merge($defaultMiddleware['before'],$bus['middleware'],$defaultMiddleware['after']) :$bus['middleware'];
14771477

1478-
if (!$validationConfig['enabled'] &&\in_array('messenger.middleware.validation',$middleware,true)) {
1479-
thrownewLogicException('The Validation middleware is only available when the Validator component is installed and enabled. Try running "composer require symfony/validator".');
1478+
foreach ($middlewareas$middlewareItem) {
1479+
if (!$validationConfig['enabled'] &&'messenger.middleware.validation' ===$middlewareItem['id']) {
1480+
thrownewLogicException('The Validation middleware is only available when the Validator component is installed and enabled. Try running "composer require symfony/validator".');
1481+
}
14801482
}
14811483

14821484
$container->setParameter($busId.'.middleware',$middleware);
@@ -1511,8 +1513,8 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
15111513
$transportDefinition = (newDefinition(TransportInterface::class))
15121514
->setFactory(array(newReference('messenger.transport_factory'),'createTransport'))
15131515
->setArguments(array($transport['dsn'],$transport['options']))
1514-
->addTag('messenger.receiver',array('name' =>$name))
1515-
->addTag('messenger.sender',array('name' =>$name))
1516+
->addTag('messenger.receiver',array('alias' =>$name))
1517+
->addTag('messenger.sender',array('alias' =>$name))
15161518
;
15171519
$container->setDefinition('messenger.transport.'.$name,$transportDefinition);
15181520
}

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,9 +391,16 @@
391391

392392
<xsd:complexTypename="messenger_bus">
393393
<xsd:sequence>
394-
<xsd:elementname="middleware"type="xsd:string"minOccurs="0"maxOccurs="unbounded" />
394+
<xsd:elementname="middleware"type="messenger_middleware"minOccurs="0"maxOccurs="unbounded" />
395395
</xsd:sequence>
396396
<xsd:attributename="name"type="xsd:string"use="required"/>
397397
<xsd:attributename="default-middleware"type="xsd:boolean"/>
398398
</xsd:complexType>
399+
400+
<xsd:complexTypename="messenger_middleware">
401+
<xsd:sequence>
402+
<xsd:elementname="argument"type="xsd:anyType"minOccurs="0"maxOccurs="unbounded" />
403+
</xsd:sequence>
404+
<xsd:attributename="id"type="xsd:string"use="required"/>
405+
</xsd:complexType>
399406
</xsd:schema>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework',array(
4+
'messenger' =>array(
5+
'buses' =>array(
6+
'command_bus' =>array(
7+
'middleware' =>array(
8+
array(
9+
'foo' =>array('qux'),
10+
'bar' =>array('baz'),
11+
),
12+
),
13+
),
14+
),
15+
),
16+
));

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_multiple_buses.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
'messenger.bus.commands' =>null,
88
'messenger.bus.events' =>array(
99
'middleware' =>array(
10+
array('with_factory' =>array('foo',true,array('bar' =>'baz'))),
1011
'allow_no_handler',
1112
),
1213
),

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_multiple_buses.xml‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@
99
<framework:messengerdefault-bus="messenger.bus.commands">
1010
<framework:busname="messenger.bus.commands" />
1111
<framework:busname="messenger.bus.events">
12-
<framework:middleware>allow_no_handler</framework:middleware>
12+
<framework:middlewareid="with_factory">
13+
<framework:argument>foo</framework:argument>
14+
<framework:argument>true</framework:argument>
15+
<framework:argument>
16+
<framework:bar>baz</framework:bar>
17+
</framework:argument>
18+
</framework:middleware>
19+
<framework:middlewareid="allow_no_handler" />
1320
</framework:bus>
1421
<framework:busname="messenger.bus.queries"default-middleware="false">
15-
<framework:middleware>route_messages</framework:middleware>
16-
<framework:middleware>allow_no_handler</framework:middleware>
17-
<framework:middleware>call_message_handler</framework:middleware>
22+
<framework:middlewareid="route_messages" />
23+
<framework:middlewareid="allow_no_handler" />
24+
<framework:middlewareid="call_message_handler" />
1825
</framework:bus>
1926
</framework:messenger>
2027
</framework:config>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
framework:
2+
messenger:
3+
buses:
4+
command_bus:
5+
middleware:
6+
-foo:['qux']
7+
bar:['baz']

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_multiple_buses.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ framework:
55
messenger.bus.commands:~
66
messenger.bus.events:
77
middleware:
8+
-with_factory:[foo, true, { bar: baz }]
89
-"allow_no_handler"
910
messenger.bus.queries:
1011
default_middleware:false

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php‎

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
useSymfony\Component\HttpKernel\DependencyInjection\LoggerPass;
3737
useSymfony\Component\Messenger\Tests\Fixtures\DummyMessage;
3838
useSymfony\Component\Messenger\Tests\Fixtures\SecondMessage;
39+
useSymfony\Component\Messenger\Transport\TransportFactory;
3940
useSymfony\Component\PropertyAccess\PropertyAccessor;
4041
useSymfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
4142
useSymfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
@@ -528,6 +529,8 @@ public function testMessenger()
528529
$container =$this->createContainerFromFile('messenger');
529530
$this->assertTrue($container->hasAlias('message_bus'));
530531
$this->assertFalse($container->hasDefinition('messenger.transport.amqp.factory'));
532+
$this->assertTrue($container->hasDefinition('messenger.transport_factory'));
533+
$this->assertSame(TransportFactory::class,$container->getDefinition('messenger.transport_factory')->getClass());
531534
}
532535

533536
publicfunctiontestMessengerTransports()
@@ -536,8 +539,8 @@ public function testMessengerTransports()
536539
$this->assertTrue($container->hasDefinition('messenger.transport.default'));
537540
$this->assertTrue($container->getDefinition('messenger.transport.default')->hasTag('messenger.receiver'));
538541
$this->assertTrue($container->getDefinition('messenger.transport.default')->hasTag('messenger.sender'));
539-
$this->assertEquals(array(array('name' =>'default')),$container->getDefinition('messenger.transport.default')->getTag('messenger.receiver'));
540-
$this->assertEquals(array(array('name' =>'default')),$container->getDefinition('messenger.transport.default')->getTag('messenger.sender'));
542+
$this->assertEquals(array(array('alias' =>'default')),$container->getDefinition('messenger.transport.default')->getTag('messenger.receiver'));
543+
$this->assertEquals(array(array('alias' =>'default')),$container->getDefinition('messenger.transport.default')->getTag('messenger.sender'));
541544

542545
$this->assertTrue($container->hasDefinition('messenger.transport.customised'));
543546
$transportFactory =$container->getDefinition('messenger.transport.customised')->getFactory();
@@ -601,18 +604,41 @@ public function testMessengerWithMultipleBuses()
601604

602605
$this->assertTrue($container->has('messenger.bus.commands'));
603606
$this->assertSame(array(),$container->getDefinition('messenger.bus.commands')->getArgument(0));
604-
$this->assertEquals(array('logging','route_messages','call_message_handler'),$container->getParameter('messenger.bus.commands.middleware'));
607+
$this->assertEquals(array(
608+
array('id' =>'logging'),
609+
array('id' =>'route_messages'),
610+
array('id' =>'call_message_handler'),
611+
),$container->getParameter('messenger.bus.commands.middleware'));
605612
$this->assertTrue($container->has('messenger.bus.events'));
606613
$this->assertSame(array(),$container->getDefinition('messenger.bus.events')->getArgument(0));
607-
$this->assertEquals(array('logging','allow_no_handler','route_messages','call_message_handler'),$container->getParameter('messenger.bus.events.middleware'));
614+
$this->assertEquals(array(
615+
array('id' =>'logging'),
616+
array('id' =>'with_factory','arguments' =>array('foo',true,array('bar' =>'baz'))),
617+
array('id' =>'allow_no_handler','arguments' =>array()),
618+
array('id' =>'route_messages'),
619+
array('id' =>'call_message_handler'),
620+
),$container->getParameter('messenger.bus.events.middleware'));
608621
$this->assertTrue($container->has('messenger.bus.queries'));
609622
$this->assertSame(array(),$container->getDefinition('messenger.bus.queries')->getArgument(0));
610-
$this->assertEquals(array('route_messages','allow_no_handler','call_message_handler'),$container->getParameter('messenger.bus.queries.middleware'));
623+
$this->assertEquals(array(
624+
array('id' =>'route_messages','arguments' =>array()),
625+
array('id' =>'allow_no_handler','arguments' =>array()),
626+
array('id' =>'call_message_handler','arguments' =>array()),
627+
),$container->getParameter('messenger.bus.queries.middleware'));
611628

612629
$this->assertTrue($container->hasAlias('message_bus'));
613630
$this->assertSame('messenger.bus.commands', (string)$container->getAlias('message_bus'));
614631
}
615632

633+
/**
634+
* @expectedException \InvalidArgumentException
635+
* @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"]}"
636+
*/
637+
publicfunctiontestMessengerMiddlewareFactoryErroneousFormat()
638+
{
639+
$this->createContainerFromFile('messenger_middleware_factory_erroneous_format');
640+
}
641+
616642
publicfunctiontestTranslator()
617643
{
618644
$container =$this->createContainerFromFile('full');

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp