8000 bug #31117 [FrameworkBundle] fix math depth handler configuration (Ra… · symfony/symfony@097c229 · GitHub
[go: up one dir, main page]

Skip to content

Commit 097c229

Browse files
committed
bug #31117 [FrameworkBundle] fix math depth handler configuration (Raulnet)
This PR was merged into the 4.2 branch. Discussion ---------- [FrameworkBundle] fix math depth handler configuration | Q | A | ------------- | --- | Branch? | 4.2 f | Bug fix? | no "fix deprecated" | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #30998 | License | MIT | Doc PR | fix serializer configuration max_deep_handler Commits ------- fb9fc80 fix math depth handler
2 parents bff2db7 + fb9fc80 commit 097c229

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1410,7 +1410,9 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
14101410
}
14111411

14121412
if ($config['max_depth_handler'] ?? false) {
1413-
$container->getDefinition('serializer.normalizer.object')->addMethodCall('setMaxDepthHandler', [new Reference($config['max_depth_handler'])]);
1413+
$defaultContext = $container->getDefinition('serializer.normalizer.object')->getArgument(6);
1414+
$defaultContext += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
1415+
$container->getDefinition('serializer.normalizer.object')->replaceArgument(6, $defaultContext);
14141416
}
14151417
}
14161418

src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@
6262
<argument type="service" id="serializer.property_accessor" />
6363
<argument type="service" id="property_info" on-invalid="ignore" />
6464
<argument type="service" id="serializer.mapping.class_discriminator_resolver" on-invalid="ignore" />
65+
<argument>null</argument>
66+
<argument type="collection" />
6567

6668
<!-- Run after all custom normalizers -->
6769
<tag name="serializer.normalizer" priority="-1000" />

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1073,7 +1073,8 @@ public function testSerializerEnabled()
10731073
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.name_converter.metadata_aware')->getArgument(1));
10741074
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
10751075
$this->assertEquals(['setCircularReferenceHandler', [new Reference('my.circular.reference.handler')]], $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[0]);
1076-
$this->assertEquals(['setMaxDepthHandler', [new Reference('my.max.depth.handler')]], $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[1]);
1076+
$this->assertArrayHasKey('max_depth_handler', $container->getDefinition('serializer.normalizer.object')->getArgument(6));
1077+
$this->assertEquals($container->getDefinition('serializer.normalizer.object')->getArgument(6)['max_depth_handler'], new Reference('my.max.depth.handler'));
10771078
}
10781079

10791080
public function testRegisterSerializerExtractor()

src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ public function __construct(ClassMetadataFactoryInterface $classMetadataFactory
110110
}
111111
}
112112
}
113+
114+
if (isset($this->defaultContext[self::CIRCULAR_REFERENCE_HANDLER]) && !\is_callable($this->defaultContext[self::CIRCULAR_REFERENCE_HANDLER])) {
115+
throw new InvalidArgumentException(sprintf('Invalid callback found in the "%s" default context option.', self::CIRCULAR_REFERENCE_HANDLER));
116+
}
113117
}
114118

115119
/**

0 commit comments

Comments
 (0)
0