From 0970b79beb86e36508b853ab798eca31eb52b75e Mon Sep 17 00:00:00 2001 From: Valmonzo Date: Mon, 23 Jun 2025 12:02:09 +0200 Subject: [PATCH 1/2] [Lock][Framework] Add private aliases for `LockFactory` services --- .../Bundle/FrameworkBundle/CHANGELOG.md | 2 +- .../FrameworkExtension.php | 1 + .../FrameworkExtensionTestCase.php | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md index b18639e4c1872..eac41595c2398 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md @@ -3,7 +3,7 @@ CHANGELOG 7.4 --- - + * Add autowiring alias for `LockFactory` services * Deprecate `Symfony\Bundle\FrameworkBundle\Console\Application::add()` in favor of `Symfony\Bundle\FrameworkBundle\Console\Application::addCommand()` * Add `assertEmailAddressNotContains()` to the `MailerAssertionsTrait` diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index c4ff440cc7c5d..3426e41573f1e 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -2240,6 +2240,7 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont $factoryDefinition = new ChildDefinition('lock.factory.abstract'); $factoryDefinition->replaceArgument(0, new Reference($storeDefinitionId)); $container->setDefinition('lock.'.$resourceName.'.factory', $factoryDefinition); + $container->setAlias($resourceName, 'lock.'.$resourceName.'.factory')->setPublic(false); // provide alias for default resource if ('default' === $resourceName) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php index b5f5f1ef5dc95..e55eaf0b4905b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php @@ -2553,10 +2553,18 @@ public function testNamedLocks() self::assertTrue($container->hasDefinition('lock.foo.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.foo.factory')->getArgument(0)); self::assertSame('semaphore', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('foo')); + $alias = $container->getAlias('foo'); + self::assertSame('lock.foo.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.bar.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.bar.factory')->getArgument(0)); self::assertSame('flock', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('bar')); + $alias = $container->getAlias('bar'); + self::assertSame('lock.bar.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.baz.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.baz.factory')->getArgument(0)); @@ -2565,22 +2573,42 @@ public function testNamedLocks() $storeDef2 = $container->getDefinition($storeDefArg[1]); self::assertSame('semaphore', $storeDef1->getArgument(0)); self::assertSame('flock', $storeDef2->getArgument(0)); + self::assertTrue($container->hasAlias('baz')); + $alias = $container->getAlias('baz'); + self::assertSame('lock.baz.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.qux.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.qux.factory')->getArgument(0)); self::assertStringContainsString('REDIS_DSN', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('qux')); + $alias = $container->getAlias('qux'); + self::assertSame('lock.qux.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.corge.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.corge.factory')->getArgument(0)); self::assertSame('in-memory', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('corge')); + $alias = $container->getAlias('corge'); + self::assertSame('lock.corge.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.grault.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.grault.factory')->getArgument(0)); self::assertSame('mysql:host=localhost;dbname=test', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('grault')); + $alias = $container->getAlias('grault'); + self::assertSame('lock.grault.factory', (string) $alias); + self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.garply.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.garply.factory')->getArgument(0)); self::assertSame('null', $storeDef->getArgument(0)); + self::assertTrue($container->hasAlias('garply')); + $alias = $container->getAlias('garply'); + self::assertSame('lock.garply.factory', (string) $alias); + self::assertFalse($alias->isPublic()); } public function testLockWithService() From 5a5ac82dad32324c6f05bac3bf8d497437c262f2 Mon Sep 17 00:00:00 2001 From: Valmonzo Date: Mon, 23 Jun 2025 13:12:03 +0200 Subject: [PATCH 2/2] fix post review --- .../Bundle/FrameworkBundle/CHANGELOG.md | 2 +- .../FrameworkExtension.php | 2 +- .../FrameworkExtensionTestCase.php | 28 ------------------- 3 files changed, 2 insertions(+), 30 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md index eac41595c2398..b4ce976a2d4bc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md @@ -3,7 +3,7 @@ CHANGELOG 7.4 --- - * Add autowiring alias for `LockFactory` services + * Register alias for argument for lock services with lock name only * Deprecate `Symfony\Bundle\FrameworkBundle\Console\Application::add()` in favor of `Symfony\Bundle\FrameworkBundle\Console\Application::addCommand()` * Add `assertEmailAddressNotContains()` to the `MailerAssertionsTrait` diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 3426e41573f1e..cc480f15e6cbc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -2240,7 +2240,6 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont $factoryDefinition = new ChildDefinition('lock.factory.abstract'); $factoryDefinition->replaceArgument(0, new Reference($storeDefinitionId)); $container->setDefinition('lock.'.$resourceName.'.factory', $factoryDefinition); - $container->setAlias($resourceName, 'lock.'.$resourceName.'.factory')->setPublic(false); // provide alias for default resource if ('default' === $resourceName) { @@ -2248,6 +2247,7 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont $container->setAlias(LockFactory::class, new Alias('lock.factory', false)); } else { $container->registerAliasForArgument('lock.'.$resourceName.'.factory', LockFactory::class, $resourceName.'.lock.factory'); + $container->registerAliasForArgument('lock.'.$resourceName.'.factory', LockFactory::class, $resourceName); } } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php index e55eaf0b4905b..b5f5f1ef5dc95 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php @@ -2553,18 +2553,10 @@ public function testNamedLocks() self::assertTrue($container->hasDefinition('lock.foo.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.foo.factory')->getArgument(0)); self::assertSame('semaphore', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('foo')); - $alias = $container->getAlias('foo'); - self::assertSame('lock.foo.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.bar.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.bar.factory')->getArgument(0)); self::assertSame('flock', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('bar')); - $alias = $container->getAlias('bar'); - self::assertSame('lock.bar.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.baz.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.baz.factory')->getArgument(0)); @@ -2573,42 +2565,22 @@ public function testNamedLocks() $storeDef2 = $container->getDefinition($storeDefArg[1]); self::assertSame('semaphore', $storeDef1->getArgument(0)); self::assertSame('flock', $storeDef2->getArgument(0)); - self::assertTrue($container->hasAlias('baz')); - $alias = $container->getAlias('baz'); - self::assertSame('lock.baz.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.qux.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.qux.factory')->getArgument(0)); self::assertStringContainsString('REDIS_DSN', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('qux')); - $alias = $container->getAlias('qux'); - self::assertSame('lock.qux.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.corge.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.corge.factory')->getArgument(0)); self::assertSame('in-memory', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('corge')); - $alias = $container->getAlias('corge'); - self::assertSame('lock.corge.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.grault.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.grault.factory')->getArgument(0)); self::assertSame('mysql:host=localhost;dbname=test', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('grault')); - $alias = $container->getAlias('grault'); - self::assertSame('lock.grault.factory', (string) $alias); - self::assertFalse($alias->isPublic()); self::assertTrue($container->hasDefinition('lock.garply.factory')); $storeDef = $container->getDefinition($container->getDefinition('lock.garply.factory')->getArgument(0)); self::assertSame('null', $storeDef->getArgument(0)); - self::assertTrue($container->hasAlias('garply')); - $alias = $container->getAlias('garply'); - self::assertSame('lock.garply.factory', (string) $alias); - self::assertFalse($alias->isPublic()); } public function testLockWithService()