From 8028ffaf997a53e286047b41cc223339ec474131 Mon Sep 17 00:00:00 2001 From: soyuka Date: Mon, 19 Sep 2022 16:45:17 +0200 Subject: [PATCH 1/2] fix(symfony): resource class directories bc break --- .../ApiPlatformExtension.php | 5 ++--- .../ApiPlatformExtensionTest.php | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index 5f8aa582c8b..aa2baf07c08 100644 --- a/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -305,10 +305,9 @@ private function getResourcesToWatch(ContainerBuilder $container, array $config) { $paths = array_unique(array_merge($this->getBundlesResourcesPaths($container, $config), $config['mapping']['paths'])); - // Default paths - if (!$paths) { + if (!$config['mapping']['paths']) { $projectDir = $container->getParameter('kernel.project_dir'); - foreach (["$projectDir/config/api_platform", "$projectDir/src/ApiResource", "$projectDir/src/Document", "$projectDir/src/Entity"] as $dir) { + foreach (["$projectDir/config/api_platform", "$projectDir/src/ApiResource"] as $dir) { if (is_dir($dir)) { $paths[] = $dir; } diff --git a/tests/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index bde4971a33a..158e050455d 100644 --- a/tests/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -1160,4 +1160,23 @@ public function testDefaults(): void $this->assertEquals($this->container->getParameter('api_platform.defaults'), ['extra_properties' => ['else' => 'foo', 'something' => 'test']]); } + + public function testConfigurationDirectories(): void + { + $config = self::DEFAULT_CONFIG; + $config['api_platform']['defaults'] = [ + 'something' => 'test', + 'extra_properties' => ['else' => 'foo'], + ]; + + (new ApiPlatformExtension())->load($config, $this->container); + + $kernelProjectDir = realpath(__DIR__.'/../../../Fixtures/TestBundle'); + $resourceClassDirectories = $this->container->getParameter('api_platform.resource_class_directories'); + + $this->assertContains($kernelProjectDir.'/Resources/config/api_resources', $resourceClassDirectories); + $this->assertContains($kernelProjectDir.'/Entity', $resourceClassDirectories); + $this->assertContains($kernelProjectDir.'/Document', $resourceClassDirectories); + $this->assertContains(realpath(__DIR__.'/../../../Symfony/Bundle/DependencyInjection').'/../../../Fixtures/app/config/api_platform', $resourceClassDirectories); + } } From 020652e73f73d23486622c7ac0e4a3469f9ec9f0 Mon Sep 17 00:00:00 2001 From: soyuka Date: Tue, 20 Sep 2022 10:39:14 +0200 Subject: [PATCH 2/2] review --- .../Bundle/DependencyInjection/ApiPlatformExtension.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index aa2baf07c08..dae84741539 100644 --- a/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -312,6 +312,14 @@ private function getResourcesToWatch(ContainerBuilder $container, array $config) $paths[] = $dir; } } + + if ($this->isConfigEnabled($container, $config['doctrine']) && is_dir($doctrinePath = "$projectDir/src/Entity")) { + $paths[] = $doctrinePath; + } + + if ($this->isConfigEnabled($container, $config['doctrine_mongodb_odm']) && is_dir($documentPath = "$projectDir/src/Document")) { + $paths[] = $documentPath; + } } $resources = ['yml' => [], 'xml' => [], 'dir' => []];