Skip to content

Commit 030b94c

Browse files
Fix registering traceable voters, argument resolvers and normalizers
1 parent 6c28196 commit 030b94c

File tree

6 files changed

+24
-22
lines changed

6 files changed

+24
-22
lines changed

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function process(ContainerBuilder $container)
5656
}
5757

5858
if ($debug) {
59-
$voterServices[] = new Reference($debugVoterServiceId = 'debug.security.voter.'.$voterServiceId);
59+
$voterServices[] = new Reference($debugVoterServiceId = '.debug.security.voter.'.$voterServiceId);
6060

6161
$container
6262
->register($debugVoterServiceId, TraceableVoter::class)

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/AddSecurityVotersPassTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ public function testThatVotersAreTraceableInDebugMode()
9191
$compilerPass = new AddSecurityVotersPass();
9292
$compilerPass->process($container);
9393

94-
$def1 = $container->getDefinition('debug.security.voter.voter1');
94+
$def1 = $container->getDefinition('.debug.security.voter.voter1');
9595
$this->assertNull($def1->getDecoratedService(), 'voter1: should not be decorated');
9696
$this->assertEquals(new Reference('voter1'), $def1->getArgument(0), 'voter1: wrong argument');
9797

98-
$def2 = $container->getDefinition('debug.security.voter.voter2');
98+
$def2 = $container->getDefinition('.debug.security.voter.voter2');
9999
$this->assertNull($def2->getDecoratedService(), 'voter2: should not be decorated');
100100
$this->assertEquals(new Reference('voter2'), $def2->getArgument(0), 'voter2: wrong argument');
101101

src/Symfony/Component/HttpKernel/DependencyInjection/ControllerArgumentValueResolverPass.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,17 @@ public function process(ContainerBuilder $container)
5656
$resolvers = array_values($resolvers);
5757

5858
if ($container->getParameter('kernel.debug') && class_exists(Stopwatch::class) && $container->has('debug.stopwatch')) {
59-
foreach ($resolvers + $namedResolvers as $resolverReference) {
59+
$debugResolvers = [];
60+
foreach ($resolvers as $resolverReference) {
6061
$id = (string) $resolverReference;
61-
$container->register("debug.$id", TraceableValueResolver::class)
62-
->setDecoratedService($id)
63-
->setArguments([new Reference("debug.$id.inner"), new Reference('debug.stopwatch')]);
62+
$debugResolvers[$id] = $container->register('.debug.value_resolver.'.$id, TraceableValueResolver::class)
63+
->setArguments([new Reference($id), new Reference('debug.stopwatch')])
64+
->addTag('controller.argument_value_resolver');
65+
}
66+
foreach ($namedResolvers as $resolverReference) {
67+
$id = (string) $resolverReference;
68+
$debugResolvers[$id] ??= $container->register('.debug.value_resolver.'.$id, TraceableValueResolver::class)
69+
->setArguments([new Reference($id), new Reference('debug.stopwatch')]);
6470
}
6571
}
6672

src/Symfony/Component/HttpKernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ public function testInDebugWithStopWatchDefinition()
8181
(new ControllerArgumentValueResolverPass())->process($container);
8282
$this->assertEquals($expected, $definition->getArgument(1)->getValues());
8383

84-
$this->assertTrue($container->hasDefinition('debug.n1'));
85-
$this->assertTrue($container->hasDefinition('debug.n2'));
86-
$this->assertTrue($container->hasDefinition('debug.n3'));
84+
$this->assertTrue($container->hasDefinition('.debug.value_resolver.n1'));
85+
$this->assertTrue($container->hasDefinition('.debug.value_resolver.n2'));
86+
$this->assertTrue($container->hasDefinition('.debug.value_resolver.n3'));
8787

8888
$this->assertTrue($container->hasDefinition('n1'));
8989
$this->assertTrue($container->hasDefinition('n2'));

src/Symfony/Component/Serializer/DependencyInjection/SerializerPass.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@ public function process(ContainerBuilder $container)
4646

4747
if ($container->getParameter('kernel.debug') && $container->hasDefinition('serializer.data_collector')) {
4848
foreach (array_keys($normalizers) as $normalizer) {
49-
$container->register('debug.'.$normalizer, TraceableNormalizer::class)
50-
->setDecoratedService($normalizer)
51-
->setArguments([new Reference('debug.'.$normalizer.'.inner'), new Reference('serializer.data_collector')]);
49+
$container->register('.debug.serializer.normalizer.'.$normalizer, TraceableNormalizer::class)
50+
->setArguments([new Reference($normalizer), new Reference('serializer.data_collector')]);
5251
}
5352
}
5453

@@ -61,9 +60,8 @@ public function process(ContainerBuilder $container)
6160

6261
if ($container->getParameter('kernel.debug') && $container->hasDefinition('serializer.data_collector')) {
6362
foreach (array_keys($encoders) as $encoder) {
64-
$container->register('debug.'.$encoder, TraceableEncoder::class)
65-
->setDecoratedService($encoder)
66-
->setArguments([new Reference('debug.'.$encoder.'.inner'), new Reference('serializer.data_collector')]);
63+
$container->register('.debug.serializer.encoder.'.$encoder, TraceableEncoder::class)
64+
->setArguments([new Reference($encoder), new Reference('serializer.data_collector')]);
6765
}
6866
}
6967

src/Symfony/Component/Serializer/Tests/DependencyInjection/SerializerPassTest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,17 +104,15 @@ public function testNormalizersAndEncodersAreDecoredAndOrderedWhenCollectingData
104104
$serializerPass = new SerializerPass();
105105
$serializerPass->process($container);
106106

107-
$traceableNormalizerDefinition = $container->getDefinition('debug.n');
108-
$traceableEncoderDefinition = $container->getDefinition('debug.e');
107+
$traceableNormalizerDefinition = $container->getDefinition('.debug.serializer.normalizer.n');
108+
$traceableEncoderDefinition = $container->getDefinition('.debug.serializer.encoder.e');
109109

110110
$this->assertEquals(TraceableNormalizer::class, $traceableNormalizerDefinition->getClass());
111-
$this->assertEquals(['n', null, 0], $traceableNormalizerDefinition->getDecoratedService());
112-
$this->assertEquals(new Reference('debug.n.inner'), $traceableNormalizerDefinition->getArgument(0));
111+
$this->assertEquals(new Reference('n'), $traceableNormalizerDefinition->getArgument(0));
113112
$this->assertEquals(new Reference('serializer.data_collector'), $traceableNormalizerDefinition->getArgument(1));
114113

115114
$this->assertEquals(TraceableEncoder::class, $traceableEncoderDefinition->getClass());
116-
$this->assertEquals(['e', null, 0], $traceableEncoderDefinition->getDecoratedService());
117-
$this->assertEquals(new Reference('debug.e.inner'), $traceableEncoderDefinition->getArgument(0));
115+
$this->assertEquals(new Reference('e'), $traceableEncoderDefinition->getArgument(0));
118116
$this->assertEquals(new Reference('serializer.data_collector'), $traceableEncoderDefinition->getArgument(1));
119117
}
120118
}

0 commit comments

Comments
 (0)