8000 Remove the extra layer of complexity with the adapter and adapter fac… · symfony/symfony@6fd239a · GitHub
[go: up one dir, main page]

Skip to content

Commit 6fd239a

Browse files
committed
Remove the extra layer of complexity with the adapter and adapter factory interface
1 parent 5675de3 commit 6fd239a

File tree

8 files changed

+59
-104
lines changed

8 files changed

+59
-104
lines changed

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1473,19 +1473,20 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
14731473
}
14741474

14751475
foreach ($config['adapters'] as $name => $adapter) {
1476-
$container->setDefinition($adapterId = 'messenger.'.$name.'_adapter', (new Definition(MessengerAdapterInterface::class, array(
1476+
$container->setDefinition('messenger.'.$name.'_sender', (new Definition(SenderInterface::class))->setFactory(array(
1477+
new Reference('messenger.adapter_factory'),
1478+
'createSender',
1479+
))->setArguments(array(
14771480
$adapter['dsn'],
14781481
$adapter['options'],
1479-
)))->setFactory(array(new Reference('messenger.adapter_factory'), 'create'))->setPublic(true));
1480-
1481-
$container->setDefinition('messenger.'.$name.'_sender', (new Definition(SenderInterface::class))->setFactory(array(
1482-
new Reference($adapterId),
1483-
'sender',
14841482
))->addTag('messenger.sender'));
14851483

14861484
$container->setDefinition('messenger.'.$name.'_receiver', (new Definition(ReceiverInterface::class))->setFactory(array(
1487-
new Reference($adapterId),
1488-
'receiver',
1485+
new Reference('messenger.adapter_factory'),
1486+
'createReceiver',
1487+
))->setArguments(array(
1488+
$adapter['dsn'],
1489+
$adapter['options'],
14891490
))->addTag('messenger.receiver'));
14901491
}
14911492
}

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -536,20 +536,28 @@ public function testMessengerValidationDisabled()
536536
public function testMessengerAdapter()
537537
{
538538
$container = $this->createContainerFromFile('messenger_adapter');
539-
$this->assertTrue($container->hasDefinition('messenger.default_adapter'));
540539
$this->assertTrue($container->hasDefinition('messenger.default_sender'));
541540
$this->assertTrue($container->getDefinition('messenger.default_sender')->hasTag('messenger.sender'));
542541
$this->assertTrue($container->hasDefinition('messenger.default_receiver'));
543542
$this->assertTrue($container->getDefinition('messenger.default_receiver')->hasTag('messenger.receiver'));
544543

545-
$this->assertTrue($container->hasDefinition('messenger.customised_adapter'));
546-
$factory = $container->getDefinition('messenger.customised_adapter')->getFactory();
547-
$arguments = $container->getDefinition('messenger.customised_adapter')->getArguments();
544+
$this->assertTrue($container->hasDefinition('messenger.customised_sender'));
545+
$senderFactory = $container->getDefinition('messenger.customised_sender')->getFactory();
546+
$senderArguments = $container->getDefinition('messenger.customised_sender')->getArguments();
548547

549-
$this->assertEquals(array(new Reference('messenger.adapter_factory'), 'create'), $factory);
550-
$this->assertEquals(2, count($arguments));
551-
$this->assertEquals('amqp://localhost/%2f/messages?exchange_name=exchange_name', $arguments[0]);
552-
$this->assertEquals(array('queue_name' => 'Queue'), $arguments[1]);
548+
$this->assertEquals(array(new Reference('messenger.adapter_factory'), 'createSender'), $senderFactory);
549+
$this->assertEquals(2, count($senderArguments));
550+
$this->assertEquals('amqp://localhost/%2f/messages?exchange_name=exchange_name', $senderArguments[0]);
551+
$this->assertEquals(array('queue_name' => 'Queue'), $senderArguments[1]);
552+
553+
$this->assertTrue($container->hasDefinition('messenger.customised_receiver'));
554+
$receiverFactory = $container->getDefinition('messenger.customised_receiver')->getFactory();
555+
$receiverArguments = $container->getDefinition('messenger.customised_receiver')->getArguments();
556+
557+
$this->assertEquals(array(new Reference('messenger.adapter_factory'), 'createReceiver'), $receiverFactory);
558+
$this->assertEquals(2, count($receiverArguments));
559+
$this->assertEquals('amqp://localhost/%2f/messages?exchange_name=exchange_name', $receiverArguments[0]);
560+
$this->assertEquals(array('queue_name' => 'Queue'), $receiverArguments[1]);
553561
}
554562

555563
public function testTranslator()

src/Symfony/Component/Messenger/Adapter/Factory/AdapterFactoryInterface.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,19 @@
1111

1212
namespace Symfony\Component\Messenger\Adapter\Factory;
1313

14+
use Symfony\Component\Messenger\Transport\ReceiverInterface;
15+
use Symfony\Component\Messenger\Transport\SenderInterface;
16+
1417
/**
1518
* Creates a Messenger adapter.
1619
*
1720
* @author Samuel Roze <samuel.roze@gmail.com>
1821
*/
1922
interface AdapterFactoryInterface
2023
{
21-
public function create(string $dsn, array $options): AdapterInterface;
24+
public function createReceiver(string $dsn, array $options): ReceiverInterface;
25+
26+
public function createSender(string $dsn, array $options): SenderInterface;
2227

2328
public function supports(string $dsn, array $options): bool;
2429
}

src/Symfony/Component/Messenger/Adapter/Factory/AdapterInterface.php

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

src/Symfony/Component/Messenger/Adapter/Factory/ChainAdapterFactory.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
namespace Symfony\Component\Messenger\Adapter\Factory;
1313

14+
use Symfony\Component\Messenger\Transport\ReceiverInterface;
15+
use Symfony\Component\Messenger\Transport\SenderInterface;
16+
1417
/**
1518
* @author Samuel Roze <samuel.roze@gmail.com>
1619
*/
@@ -26,15 +29,26 @@ public function __construct(iterable $factories)
2629
$this->factories = $factories;
2730
}
2831

29-
public function create(string $dsn, array $options): AdapterInterface
32+
public function createReceiver(string $dsn, array $options): ReceiverInterface
33+
{
34+
foreach ($this->factories as $factory) {
35+
if ($factory->supports($dsn, $options)) {
36+
return $factory->createReceiver($dsn, $options);
37+
}
38+
}
39+
40+
throw new \InvalidArgumentException(sprintf('No adapter supports the given DSN "%s".', $dsn));
41+
}
42+
43+
public function createSender(string $dsn, array $options): SenderInterface
3044
{
3145
foreach ($this->factories as $factory) {
3246
if ($factory->supports($dsn, $options)) {
33-
return $factory->create($dsn, $options);
47+
return $factory->createSender($dsn, $options);
3448
}
3549
}
3650

37-
throw new \InvalidArgumentException(sprintf('The given DSN "%s" is invalid.', $dsn));
51+
throw new \InvalidArgumentException(sprintf('No adapter supports the given DSN "%s".', $dsn));
3852
}
3953

4054
public function supports(string $dsn, array $options): bool

src/Symfony/Component/Messenger/Adapter/PhpAmqp/AmqpAdapter.php

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

src/Symfony/Component/Messenger/Adapter/PhpAmqp/AmqpAdapterFactory.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111

1212
namespace Symfony\Component\Messenger\Adapter\PhpAmqp;
1313

14-
use Symfony\Component\Messenger\Adapter\Factory\AdapterInterface;
1514
use Symfony\Component\Messenger\Adapter\Factory\AdapterFactoryInterface;
15+
use Symfony\Component\Messenger\Transport\ReceiverInterface;
16+
use Symfony\Component\Messenger\Transport\SenderInterface;
1617
use Symfony\Component\Messenger\Transport\Serialization\DecoderInterface;
1718
use Symfony\Component\Messenger\Transport\Serialization\EncoderInterface;
1819

@@ -32,13 +33,14 @@ public function __construct(EncoderInterface $encoder, DecoderInterface $decoder
3233
$this->debug = $debug;
3334
}
3435

35-
public function create(string $dsn, array $options): AdapterInterface
36+
public function createReceiver(string $dsn, array $options): ReceiverInterface
3637
{
37-
return new AmqpAdapter(
38-
new AmqpReceiver($this->decoder, $this->connection),
39-
new AmqpSender($this->encoder, $this->connection),
40-
Connection::fromDsn($dsn, $options, $this->debug)
41-
);
38+
return new AmqpReceiver($this->decoder, Connection::fromDsn($dsn, $options, $this->debug));
39+
}
40+
41+
public function createSender(string $dsn, array $options): SenderInterface
42+
{
43+
return new AmqpSender($this->encoder, Connection::fromDsn($dsn, $options, $this->debug));
4244
}
4345

4446
public function supports(string $dsn, array $options): bool

src/Symfony/Component/Messenger/Transport/Enhancers/MaximumCountReceiver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ public function __construct(ReceiverInterface $decoratedReceiver, int $maximumNu
< 1241 /code>
2727
$this->maximumNumberOfMessages = $maximumNumberOfMessages;
2828
}
2929

30-
public function receive(callable $handler) : void
30+
public function receive(callable $handler): void
3131
{
3232
$receivedMessages = 0;
3333

34-
$this->decoratedReceiver->receive(function($message) use ($handler, &$receivedMessages) {
34+
$this->decoratedReceiver->receive(function ($message) use ($handler, &$receivedMessages) {
3535
$handler($message);
3636

3737
if (++$receivedMessages >= $this->maximumNumberOfMessages) {

0 commit comments

Comments
 (0)
0