Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a7c7477

Browse files
committed
replace DefinitionDecorator with ChildDefinition
The DefinitionDecorator class does not deal with decorated services. It reflects a parent-child-relationship between definitions instead. To avoid confusion, this commit deprecates the existing DefinitionDecorator class and introduces a new ChildDefinition class as replacement.
1 parent d6e8937 commit a7c7477

37 files changed

+480
-302
lines changed

UPGRADE-3.3.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
UPGRADE FROM 3.2 to 3.3
2+
=======================
3+
4+
DependencyInjection
5+
-------------------
6+
7+
* The `DefinitionDecorator` class is deprecated and will be removed in 4.0, use
8+
the `ChildDefinition` class instead.

UPGRADE-4.0.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ Debug
1616
DependencyInjection
1717
-------------------
1818

19+
* The `DefinitionDecorator` class has been removed. Use the `ChildDefinition`
20+
class instead.
21+
1922
* Using unsupported configuration keys in YAML configuration files raises an
2023
exception.
2124

src/Symfony/Bridge/Doctrine/DependencyInjection/Security/UserProvider/EntityFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
1515
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider\UserProviderFactoryInterface;
16-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
16+
use Symfony\Component\DependencyInjection\ChildDefinition;
1717
use Symfony\Component\DependencyInjection\ContainerBuilder;
1818

1919
/**
@@ -36,7 +36,7 @@ public function __construct($key, $providerId)
3636
public function create(ContainerBuilder $container, $id, $config)
3737
{
3838
$container
39-
->setDefinition($id, new DefinitionDecorator($this->providerId))
39+
->setDefinition($id, new ChildDefinition($this->providerId))
4040
->addArgument($config['class'])
4141
->addArgument($config['property'])
4242
->addArgument($config['manager_name'])

src/Symfony/Bridge/Doctrine/composer.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"require-dev": {
2424
"symfony/stopwatch": "~2.8|~3.0",
25-
"symfony/dependency-injection": "~2.8|~3.0",
25+
"symfony/dependency-injection": "~3.3",
2626
"symfony/form": "~3.0,>=3.0.5",
2727
"symfony/http-kernel": "~2.8|~3.0",
2828
"symfony/property-access": "~2.8|~3.0",
@@ -36,6 +36,9 @@
3636
"doctrine/dbal": "~2.4",
3737
"doctrine/orm": "~2.4,>=2.4.5"
3838
},
39+
"conflict": {
40+
"symfony/dependency-injection": "<3.3"
41+
},
3942
"suggest": {
4043
"symfony/form": "",
4144
"symfony/validator": "",

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

1414
use Symfony\Component\Cache\Adapter\RedisAdapter;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1516
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718
use Symfony\Component\DependencyInjection\Definition;
18-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1919
use Symfony\Component\DependencyInjection\Reference;
2020
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
2121

@@ -47,7 +47,7 @@ public function process(ContainerBuilder $container)
4747
if ($pool->isAbstract()) {
4848
continue;
4949
}
50-
while ($adapter instanceof DefinitionDecorator) {
50+
while ($adapter instanceof ChildDefinition) {
5151
$adapter = $container->findDefinition($adapter->getParent());
5252
if ($t = $adapter->getTag('cache.pool')) {
5353
$tags[0] += $t[0];

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
use Symfony\Bridge\Monolog\Processor\DebugProcessor;
1616
use Symfony\Component\Cache\Adapter\AdapterInterface;
1717
use Symfony\Component\DependencyInjection\Alias;
18+
use Symfony\Component\DependencyInjection\ChildDefinition;
1819
use Symfony\Component\DependencyInjection\ContainerBuilder;
1920
use Symfony\Component\DependencyInjection\ContainerInterface;
2021
use Symfony\Component\DependencyInjection\Definition;
21-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
2222
use Symfony\Component\DependencyInjection\Exception\LogicException;
2323
use Symfony\Component\DependencyInjection\Reference;
2424
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
@@ -436,7 +436,7 @@ private function registerWorkflowConfiguration(array $workflows, ContainerBuilde
436436

437437
// Create MarkingStore
438438
if (isset($workflow['marking_store']['type'])) {
439-
$markingStoreDefinition = new DefinitionDecorator('workflow.marking_store.'.$workflow['marking_store']['type']);
439+
$markingStoreDefinition = new ChildDefinition('workflow.marking_store.'.$workflow['marking_store']['type']);
440440
foreach ($workflow['marking_store']['arguments'] as $argument) {
441441
$markingStoreDefinition->addArgument($argument);
442442
}
@@ -445,7 +445,7 @@ private function registerWorkflowConfiguration(array $workflows, ContainerBuilde
445445
}
446446

447447
// Create Workflow
448-
$workflowDefinition = new DefinitionDecorator(sprintf('%s.abstract', $type));
448+
$workflowDefinition = new ChildDefinition(sprintf('%s.abstract', $type));
449449
$workflowDefinition->replaceArgument(0, $definitionDefinition);
450450
if (isset($markingStoreDefinition)) {
451451
$workflowDefinition->replaceArgument(1, $markingStoreDefinition);
@@ -768,7 +768,7 @@ private function createPackageDefinition($basePath, array $baseUrls, Reference $
768768
}
769769

770770
if (!$baseUrls) {
771-
$package = new DefinitionDecorator('assets.path_package');
771+
$package = new ChildDefinition('assets.path_package');
772772

773773
return $package
774774
->setPublic(false)
@@ -777,7 +777,7 @@ private function createPackageDefinition($basePath, array $baseUrls, Reference $
777777
;
778778
}
779779

780-
$package = new DefinitionDecorator('assets.url_package');
780+
$package = new ChildDefinition('assets.url_package');
781781

782782
return $package
783783
->setPublic(false)
@@ -792,7 +792,7 @@ private function createVersion(ContainerBuilder $container, $version, $format, $
792792
return new Reference('assets.empty_version_strategy');
793793
}
794794

795-
$def = new DefinitionDecorator('assets.static_version_strategy');
795+
$def = new ChildDefinition('assets.static_version_strategy');
796796
$def
797797
->replaceArgument(0, $version)
798798
->replaceArgument(1, $format)
@@ -1259,7 +1259,7 @@ private function registerCacheConfiguration(array $config, ContainerBuilder $con
12591259
);
12601260
}
12611261
foreach ($config['pools'] as $name => $pool) {
1262-
$definition = new DefinitionDecorator($pool['adapter']);
1262+
$definition = new ChildDefinition($pool['adapter']);
12631263
$definition->setPublic($pool['public']);
12641264
unset($pool['adapter'], $pool['public']);
12651265

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/CachePoolPassTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
1313

1414
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617
use Symfony\Component\DependencyInjection\Definition;
17-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1818
use Symfony\Component\DependencyInjection\Reference;
1919

2020
class CachePoolPassTest extends \PHPUnit_Framework_TestCase
@@ -38,7 +38,7 @@ public function testNamespaceArgumentIsReplaced()
3838
$adapter->addTag('cache.pool');
3939
$container->setDefinition('app.cache_adapter', $adapter);
4040
$container->setAlias('app.cache_adapter_alias', 'app.cache_adapter');
41-
$cachePool = new DefinitionDecorator('app.cache_adapter_alias');
41+
$cachePool = new ChildDefinition('app.cache_adapter_alias');
4242
$cachePool->addArgument(null);
4343
$cachePool->addTag('cache.pool');
4444
$container->setDefinition('app.cache_pool', $cachePool);
@@ -88,7 +88,7 @@ public function testThrowsExceptionWhenCachePoolTagHasUnknownAttributes()
8888
$adapter->setAbstract(true);
8989
$adapter->addTag('cache.pool');
9090
$container->setDefinition('app.cache_adapter', $adapter);
91-
$cachePool = new DefinitionDecorator('app.cache_adapter');
91+
$cachePool = new ChildDefinition('app.cache_adapter');
9292
$cachePool->addTag('cache.pool', array('foobar' => 123));
9393
$container->setDefinition('app.cache_pool', $cachePool);
9494

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
2020
use Symfony\Component\Cache\Adapter\ProxyAdapter;
2121
use Symfony\Component\Cache\Adapter\RedisAdapter;
22+
use Symfony\Component\DependencyInjection\ChildDefinition;
2223
use Symfony\Component\DependencyInjection\ContainerBuilder;
23-
use Symfony\Component\DependencyInjection\Definition;
24-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
2524
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
2625
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
2726
use Symfony\Component\DependencyInjection\Reference;
@@ -749,14 +748,14 @@ protected function createContainerFromClosure($closure, $data = array())
749748
return $container;
750749
}
751750

752-
private function assertPathPackage(ContainerBuilder $container, DefinitionDecorator $package, $basePath, $version, $format)
751+
private function assertPathPackage(ContainerBuilder $container, ChildDefinition $package, $basePath, $version, $format)
753752
{
754753
$this->assertEquals('assets.path_package', $package->getParent());
755754
$this->assertEquals($basePath, $package->getArgument(0));
756755
$this->assertVersionStrategy($container, $package->getArgument(1), $version, $format);
757756
}
758757

759-
private function assertUrlPackage(ContainerBuilder $container, DefinitionDecorator $package, $baseUrls, $version, $format)
758+
private function assertUrlPackage(ContainerBuilder $container, ChildDefinition $package, $baseUrls, $version, $format)
760759
{
761760
$this->assertEquals('assets.url_package', $package->getParent());
762761
$this->assertEquals($baseUrls, $package->getArgument(0));
@@ -781,7 +780,7 @@ private function assertCachePoolServiceDefinitionIsCreated(ContainerBuilder $con
781780

782781
$poolDefinition = $container->getDefinition($id);
783782

784-
$this->assertInstanceOf(DefinitionDecorator::class, $poolDefinition, sprintf('Cache pool "%s" is based on an abstract cache pool.', $id));
783+
$this->assertInstanceOf(ChildDefinition::class, $poolDefinition, sprintf('Cache pool "%s" is based on an abstract cache pool.', $id));
785784

786785
$this->assertTrue($poolDefinition->hasTag('cache.pool'), sprintf('Service definition "%s" is tagged with the "cache.pool" tag.', $id));
787786
$this->assertFalse($poolDefinition->isAbstract(), sprintf('Service definition "%s" is not abstract.', $id));
@@ -794,7 +793,7 @@ private function assertCachePoolServiceDefinitionIsCreated(ContainerBuilder $con
794793
do {
795794
$parentId = $parentDefinition->getParent();
796795
$parentDefinition = $container->findDefinition($parentId);
797-
} while ($parentDefinition instanceof DefinitionDecorator);
796+
} while ($parentDefinition instanceof ChildDefinition);
798797

799798
switch ($adapter) {
800799
case 'cache.adapter.apcu':

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"php": ">=5.5.9",
2020
"symfony/cache": "~3.2",
2121
"symfony/class-loader": "~3.2",
22-
"symfony/dependency-injection": "~3.2",
22+
"symfony/dependency-injection": "~3.3",
2323
"symfony/config": "~2.8|~3.0",
2424
"symfony/event-dispatcher": "~2.8|~3.0",
2525
"symfony/http-foundation": "~3.1",

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/AbstractFactory.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
15-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\DependencyInjection\Reference;
1818

@@ -156,7 +156,7 @@ protected function isRememberMeAware($config)
156156
protected function createListener($container, $id, $config, $userProvider)
157157
{
158158
$listenerId = $this->getListenerId();
159-
$listener = new DefinitionDecorator($listenerId);
159+
$listener = new ChildDefinition($listenerId);
160160
$listener->replaceArgument(4, $id);
161161
$listener->replaceArgument(5, new Reference($this->createAuthenticationSuccessHandler($container, $id, $config)));
162162
$listener->replaceArgument(6, new Reference($this->createAuthenticationFailureHandler($container, $id, $config)));
@@ -174,12 +174,12 @@ protected function createAuthenticationSuccessHandler($container, $id, $config)
174174
$options = array_intersect_key($config, $this->defaultSuccessHandlerOptions);
175175

176176
if (isset($config['success_handler'])) {
177-
$successHandler = $container->setDefinition($successHandlerId, new DefinitionDecorator('security.authentication.custom_success_handler'));
177+
$successHandler = $container->setDefinition($successHandlerId, new ChildDefinition('security.authentication.custom_success_handler'));
178178
$successHandler->replaceArgument(0, new Reference($config['success_handler']));
179179
$successHandler->replaceArgument(1, $options);
180180
$successHandler->replaceArgument(2, $id);
181181
} else {
182-
$successHandler = $container->setDefinition($successHandlerId, new DefinitionDecorator('security.authentication.success_handler'));
182+
$successHandler = $container->setDefinition($successHandlerId, new ChildDefinition('security.authentication.success_handler'));
183183
$successHandler->addMethodCall('setOptions', array($options));
184184
$successHandler->addMethodCall('setProviderKey', array($id));
185185
}
@@ -193,11 +193,11 @@ protected function createAuthenticationFailureHandler($container, $id, $config)
193193
$options = array_intersect_key($config, $this->defaultFailureHandlerOptions);
194194

195195
if (isset($config['failure_handler'])) {
196-
$failureHandler = $container->setDefinition($id, new DefinitionDecorator('security.authentication.custom_failure_handler'));
196+
$failureHandler = $container->setDefinition($id, new ChildDefinition('security.authentication.custom_failure_handler'));
197197
$failureHandler->replaceArgument(0, new Reference($config['failure_handler']));
198198
$failureHandler->replaceArgument(1, $options);
199199
} else {
200-
$failureHandler = $container->setDefinition($id, new DefinitionDecorator('security.authentication.failure_handler'));
200+
$failureHandler = $container->setDefinition($id, new ChildDefinition('security.authentication.failure_handler'));
201201
$failureHandler->addMethodCall('setOptions', array($options));
202202
}
203203

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
15-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\DependencyInjection\Reference;
1818

@@ -63,7 +63,7 @@ protected function createAuthProvider(ContainerBuilder $container, $id, $config,
6363
{
6464
$provider = 'security.authentication.provider.dao.'.$id;
6565
$container
66-
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
66+
->setDefinition($provider, new ChildDefinition('security.authentication.provider.dao'))
6767
->replaceArgument(0, new Reference($userProviderId))
6868
->replaceArgument(1, new Reference('security.user_checker.'.$id))
6969
->replaceArgument(2, $id)
@@ -88,7 +88,7 @@ protected function createEntryPoint($container, $id, $config, $defaultEntryPoint
8888
{
8989
$entryPointId = 'security.authentication.form_entry_point.'.$id;
9090
$container
91-
->setDefinition($entryPointId, new DefinitionDecorator('security.authentication.form_entry_point'))
91+
->setDefinition($entryPointId, new ChildDefinition('security.authentication.form_entry_point'))
9292
->addArgument(new Reference('security.http_utils'))
9393
->addArgument($config['login_path'])
9494
->addArgument($config['use_forward'])

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginLdapFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
15-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\DependencyInjection\Reference;
1818

@@ -28,7 +28,7 @@ protected function createAuthProvider(ContainerBuilder $container, $id, $config,
2828
{
2929
$provider = 'security.authentication.provider.ldap_bind.'.$id;
3030
$container
31-
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.ldap_bind'))
31+
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
3232
->replaceArgument(0, new Reference($userProviderId))
3333
->replaceArgument(1, new Reference('security.user_checker.'.$id))
3434
->replaceArgument(2, $id)

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
16-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1717
use Symfony\Component\DependencyInjection\Reference;
1818

1919
/**
@@ -65,7 +65,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
6565
// configure the GuardAuthenticationFactory to have the dynamic constructor arguments
6666
$providerId = 'security.authentication.provider.guard.'.$id;
6767
$container
68-
->setDefinition($providerId, new DefinitionDecorator('security.authentication.provider.guard'))
68+
->setDefinition($providerId, new ChildDefinition('security.authentication.provider.guard'))
6969
->replaceArgument(0, $authenticatorReferences)
7070
->replaceArgument(1, new Reference($userProvider))
7171
->replaceArgument(2, $id)
@@ -74,7 +74,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
7474

7575
// listener
7676
$listenerId = 'security.authentication.listener.guard.'.$id;
77-
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.guard'));
77+
$listener = $container->setDefinition($listenerId, new ChildDefinition('security.authentication.listener.guard'));
7878
$listener->replaceArgument(2, $id);
7979
$listener->replaceArgument(3, $authenticatorReferences);
8080

0 commit comments

Comments
 (0)