From 3c90ba70628d5e1462d9a0f891a8bb72a83c91dd Mon Sep 17 00:00:00 2001 From: Baptiste Lafontaine Date: Wed, 11 Jul 2018 09:37:21 +0200 Subject: [PATCH] Add autoconfigure for handlers --- DependencyInjection/JMSSerializerExtension.php | 5 +++++ .../JMSSerializerExtensionTest.php | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/DependencyInjection/JMSSerializerExtension.php b/DependencyInjection/JMSSerializerExtension.php index 565550de..991fe7a1 100644 --- a/DependencyInjection/JMSSerializerExtension.php +++ b/DependencyInjection/JMSSerializerExtension.php @@ -4,6 +4,7 @@ use JMS\Serializer\EventDispatcher\EventSubscriberInterface; use JMS\Serializer\Exception\RuntimeException; +use JMS\Serializer\Handler\SubscribingHandlerInterface; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -21,6 +22,10 @@ public function loadInternal(array $config, ContainerBuilder $container) $container ->registerForAutoconfiguration(EventSubscriberInterface::class) ->addTag('jms_serializer.event_subscriber'); + + $container + ->registerForAutoconfiguration(SubscribingHandlerInterface::class) + ->addTag('jms_serializer.subscribing_handler'); } $loader = new XmlFileLoader($container, new FileLocator(array( diff --git a/Tests/DependencyInjection/JMSSerializerExtensionTest.php b/Tests/DependencyInjection/JMSSerializerExtensionTest.php index f8cde5e7..8a697ac6 100644 --- a/Tests/DependencyInjection/JMSSerializerExtensionTest.php +++ b/Tests/DependencyInjection/JMSSerializerExtensionTest.php @@ -3,6 +3,7 @@ namespace JMS\SerializerBundle\Tests\DependencyInjection; use Doctrine\Common\Annotations\AnnotationReader; +use JMS\Serializer\Handler\SubscribingHandlerInterface; use JMS\Serializer\SerializationContext; use JMS\Serializer\EventDispatcher\EventSubscriberInterface; use JMS\SerializerBundle\JMSSerializerBundle; @@ -531,6 +532,22 @@ public function testAutoconfigureSubscribers() $this->assertTrue($autoconfigureInstance[EventSubscriberInterface::class]->hasTag('jms_serializer.event_subscriber')); } + public function testAutoconfigureHandlers() + { + $container = $this->getContainerForConfig(array()); + + if (!method_exists($container, 'registerForAutoconfiguration')) { + $this->markTestSkipped( + 'registerForAutoconfiguration method is not available in the container' + ); + } + + $autoconfigureInstance = $container->getAutoconfiguredInstanceof(); + + $this->assertTrue(array_key_exists(SubscribingHandlerInterface::class, $autoconfigureInstance)); + $this->assertTrue($autoconfigureInstance[SubscribingHandlerInterface::class]->hasTag('jms_serializer.subscribing_handler')); + } + private function getContainerForConfig(array $configs, callable $configurator = null) { $bundle = new JMSSerializerBundle();