Skip to content

Commit 0fa3798

Browse files
dunglasfabpot
authored andcommitted
[Serializer] Add a MaxDepth handler
1 parent 92293ec commit 0fa3798

File tree

7 files changed

+10
-1
lines changed

7 files changed

+10
-1
lines changed

DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,7 @@ private function addSerializerSection(ArrayNodeDefinition $rootNode)
731731
->booleanNode('enable_annotations')->{!class_exists(FullStack::class) && class_exists(Annotation::class) ? 'defaultTrue' : 'defaultFalse'}()->end()
732732
->scalarNode('name_converter')->end()
733733
->scalarNode('circular_reference_handler')->end()
734+
->scalarNode('max_depth_handler')->end()
734735
->arrayNode('mapping')
735736
->addDefaultsIfNotSet()
736737
->fixXmlConfig('path')

DependencyInjection/FrameworkExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,10 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
12731273
if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
12741274
$container->getDefinition('serializer.normalizer.object')->addMethodCall('setCircularReferenceHandler', array(new Reference($config['circular_reference_handler'])));
12751275
}
1276+
1277+
if ($config['max_depth_handler'] ?? false) {
1278+
$container->getDefinition('serializer.normalizer.object')->addMethodCall('setMaxDepthHandler', array(new Reference($config['max_depth_handler'])));
1279+
}
12761280
}
12771281

12781282
private function registerPropertyInfoConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)

Resources/config/schema/symfony-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
<xsd:attribute name="cache" type="xsd:string" />
240240
<xsd:attribute name="enable-annotations" type="xsd:boolean" />
241241
<xsd:attribute name="name-converter" type="xsd:string" />
242+
<xsd:attribute name="max-depth-handler" type="xsd:string" />
242243
</xsd:complexType>
243244

244245
<xsd:complexType name="property_info">

Tests/DependencyInjection/Fixtures/php/full.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
'enabled' => true,
6969
'enable_annotations' => true,
7070
'name_converter' => 'serializer.name_converter.camel_case_to_snake_case',
71+
'max_depth_handler' => 'my.max.depth.handler',
7172
),
7273
'property_info' => true,
7374
'ide' => 'file%%link%%format',

Tests/DependencyInjection/Fixtures/xml/full.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
</framework:translator>
4242
<framework:validation enabled="true" />
4343
<framework:annotations cache="file" debug="true" file-cache-dir="%kernel.cache_dir%/annotations" />
44-
<framework:serializer enabled="true" enable-annotations="true" name-converter="serializer.name_converter.camel_case_to_snake_case" />
44+
<framework:serializer enabled="true" enable-annotations="true" name-converter="serializer.name_converter.camel_case_to_snake_case" max-depth-handler="my.max.depth.handler" />
4545
<framework:property-info />
4646
</framework:config>
4747
</container>

Tests/DependencyInjection/Fixtures/yml/full.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ framework:
5454
enabled: true
5555
enable_annotations: true
5656
name_converter: serializer.name_converter.camel_case_to_snake_case
57+
max_depth_handler: my.max.depth.handler
5758
property_info: ~
5859
ide: file%%link%%format
5960
request:

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,7 @@ public function testSerializerEnabled()
804804
$this->assertNull($container->getDefinition('serializer.mapping.class_metadata_factory')->getArgument(1));
805805
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.normalizer.object')->getArgument(1));
806806
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
807+
$this->assertEquals(array('setMaxDepthHandler', array(new Reference('my.max.depth.handler'))), $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[0]);
807808
}
808809

809810
public function testRegisterSerializerExtractor()

0 commit comments

Comments
 (0)