Skip to content

Commit e23c509

Browse files
authored
Merge pull request #2489 from ragboyjr/disable-messenger-from-config
Disable Messenger From Config
2 parents 68d623b + aa7bb63 commit e23c509

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
4242
use Symfony\Component\Finder\Finder;
4343
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
44-
use Symfony\Component\Messenger\MessageBusInterface;
4544
use Symfony\Component\Validator\Validator\ValidatorInterface;
4645
use Symfony\Component\Yaml\Yaml;
4746

@@ -149,11 +148,8 @@ public function load(array $configs, ContainerBuilder $container)
149148
$this->registerValidatorConfiguration($container, $config);
150149
$this->registerDataCollectorConfiguration($container, $config, $loader);
151150
$this->registerMercureConfiguration($container, $config, $loader, $useDoctrine);
151+
$this->registerMessengerConfiguration($config, $loader);
152152
$this->registerElasticsearchConfiguration($container, $config, $loader);
153-
154-
if (interface_exists(MessageBusInterface::class) && $container->has('message_bus')) {
155-
$loader->load('messenger.xml');
156-
}
157153
}
158154

159155
/**
@@ -580,6 +576,15 @@ private function registerMercureConfiguration(ContainerBuilder $container, array
580576
}
581577
}
582578

579+
private function registerMessengerConfiguration(array $config, XmlFileLoader $loader)
580+
{
581+
if (!$config['messenger']['enabled']) {
582+
return;
583+
}
584+
585+
$loader->load('messenger.xml');
586+
}
587+
583588
private function registerElasticsearchConfiguration(ContainerBuilder $container, array $config, XmlFileLoader $loader)
584589
{
585590
$enabled = $config['elasticsearch']['enabled'] && class_exists(Client::class);

src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use Symfony\Component\Config\Definition\ConfigurationInterface;
2929
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
3030
use Symfony\Component\HttpFoundation\Response;
31+
use Symfony\Component\Messenger\MessageBusInterface;
3132
use Symfony\Component\Serializer\Exception\ExceptionInterface;
3233

3334
/**
@@ -245,6 +246,10 @@ public function getConfigTreeBuilder()
245246
->end()
246247
->end()
247248

249+
->arrayNode('messenger')
250+
->{interface_exists(MessageBusInterface::class) ? 'canBeDisabled' : 'canBeEnabled'}()
251+
->end()
252+
248253
->arrayNode('elasticsearch')
249254
->canBeEnabled()
250255
->addDefaultsIfNotSet()

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,19 @@ public function testDisabledSwaggerUIAndRedoc()
471471
$this->extension->load($config, $containerBuilder);
472472
}
473473

474+
public function testDisabledMessenger()
475+
{
476+
$containerBuilderProphecy = $this->getBaseContainerBuilderProphecy();
477+
$containerBuilderProphecy->setAlias('api_platform.message_bus', 'message_bus')->shouldNotBeCalled();
478+
$containerBuilderProphecy->setDefinition('api_platform.messenger.data_persister', Argument::type(Definition::class))->shouldNotBeCalled();
479+
$containerBuilder = $containerBuilderProphecy->reveal();
480+
481+
$config = self::DEFAULT_CONFIG;
482+
$config['api_platform']['messenger']['enabled'] = false;
483+
484+
$this->extension->load($config, $containerBuilder);
485+
}
486+
474487
public function testDisableDoctrine()
475488
{
476489
$containerBuilderProphecy = $this->getBaseContainerBuilderProphecy();
@@ -837,7 +850,6 @@ private function getPartialContainerBuilderProphecy()
837850
$containerBuilderProphecy->getParameter('kernel.debug')->willReturn(false);
838851

839852
$containerBuilderProphecy->getDefinition('api_platform.http_cache.purger.varnish')->willReturn(new Definition());
840-
$containerBuilderProphecy->has('message_bus')->willReturn(true);
841853

842854
return $containerBuilderProphecy;
843855
}

tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ public function testDefaultConfig()
157157
'doctrine_mongodb_odm' => [
158158
'enabled' => true,
159159
],
160+
'messenger' => [
161+
'enabled' => true,
162+
],
160163
'mercure' => [
161164
'enabled' => true,
162165
'hub_url' => null,

0 commit comments

Comments
 (0)