Skip to content

Commit a2e5a93

Browse files
authored
Merge pull request #2319 from goetas/jms-decorator
Use symfony decoration for jms serializer handler registry
2 parents f4c04f5 + aa38360 commit a2e5a93

File tree

4 files changed

+13
-4
lines changed

4 files changed

+13
-4
lines changed

DependencyInjection/Compiler/HandlerRegistryDecorationPass.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class HandlerRegistryDecorationPass implements CompilerPassInterface
3333
{
3434
public function process(ContainerBuilder $container): void
3535
{
36-
if (!$container->has('fos_rest.serializer.jms_handler_registry')) {
36+
// skip if JMSSerializerBundle is not installed or if JMSSerializerBundle >= 4.0
37+
if (!$container->has('fos_rest.serializer.jms_handler_registry') || $container->has('jms_serializer.handler_registry.service_locator')) {
3738
return;
3839
}
3940

DependencyInjection/Compiler/JMSHandlersPass.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ final class JMSHandlersPass implements CompilerPassInterface
2727
public function process(ContainerBuilder $container): void
2828
{
2929
if ($container->has('jms_serializer.handler_registry')) {
30-
// the public alias prevents the handler registry definition from being removed
31-
$container->setAlias('fos_rest.serializer.jms_handler_registry', new Alias('jms_serializer.handler_registry', true));
30+
// perform the aliasing only when jms-serializer-bundle < 4.0
31+
if (!$container->has('jms_serializer.handler_registry.service_locator')) {
32+
// the public alias prevents the handler registry definition from being removed
33+
$container->setAlias('fos_rest.serializer.jms_handler_registry', new Alias('jms_serializer.handler_registry', true));
34+
}
3235

3336
return;
3437
}

Tests/Functional/DependencyInjectionTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use FOS\RestBundle\Serializer\JMSHandlerRegistryV2;
1717
use FOS\RestBundle\Serializer\Normalizer\FormErrorHandler;
1818
use JMS\Serializer\Visitor\SerializationVisitorInterface;
19+
use JMS\SerializerBundle\Debug\TraceableHandlerRegistry;
1920
use JMS\SerializerBundle\JMSSerializerBundle;
2021
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
2122
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
@@ -33,6 +34,10 @@ public function testSerializerRelatedServicesAreNotRemovedWhenJmsSerializerBundl
3334

3435
$this->assertInstanceOf(FormErrorHandler::class, $container->get('test.jms_serializer.form_error_handler'));
3536

37+
if (class_exists(TraceableHandlerRegistry::class)) {
38+
$this->markTestIncomplete('Starting from jms/serializer-bundle 4.0 the handler registry is not decorated anymore');
39+
}
40+
3641
$this->assertInstanceOf(
3742
interface_exists(SerializationVisitorInterface::class) ? JMSHandlerRegistryV2::class : JMSHandlerRegistry::class,
3843
$container->get('test.jms_serializer.handler_registry')

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"symfony/browser-kit": "^4.4|^5.0",
5858
"symfony/expression-language": "^4.4|^5.0",
5959
"symfony/css-selector": "^4.4|^5.0",
60-
"jms/serializer-bundle": "^2.4.3|^3.0.1",
60+
"jms/serializer-bundle": "^2.4.3|^3.0.1|^4.0",
6161
"jms/serializer": "^1.13|^2.0|^3.0",
6262
"psr/http-message": "^1.0",
6363
"friendsofphp/php-cs-fixer": "^3.0"

0 commit comments

Comments
 (0)