From 0c8317cde29e5d9100f5c6ecac540d8c46bd42dd Mon Sep 17 00:00:00 2001
From: Benjamin Franzke <ben@bnf.dev>
Date: Tue, 19 Mar 2024 21:09:05 +0100
Subject: [PATCH] [BUGFIX] Inject logger into YamlFileLoader

YamlFileLoader needs to be instantiated via `self::new` to
ensure that a logger instance is injected.

The issues was introduced with #103187 where YamlFileLoader was added to
be provided by the EXT:install ServiceProvider. This is actually not
quite right, as a service is always to be provided by the extension that
ships the service, not by the consumer.

Therefore the YamlFileLoader service definition is now moved into
EXT:core.

Resolves: #103444
Related: #103187
Releases: main
Change-Id: Ifa3b690a43239c26903443789f59fcd2768fd9d5
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83553
Tested-by: core-ci <typo3@b13.com>
Tested-by: Andreas Kienast <a.fernandez@scripting-base.de>
Reviewed-by: Andreas Kienast <a.fernandez@scripting-base.de>
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Benjamin Franzke <ben@bnf.dev>
Reviewed-by: Benjamin Franzke <ben@bnf.dev>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
---
 typo3/sysext/core/Classes/ServiceProvider.php    | 6 ++++++
 typo3/sysext/install/Classes/ServiceProvider.php | 6 ------
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/typo3/sysext/core/Classes/ServiceProvider.php b/typo3/sysext/core/Classes/ServiceProvider.php
index dd9dc981eaf7..44cf4125dca3 100644
--- a/typo3/sysext/core/Classes/ServiceProvider.php
+++ b/typo3/sysext/core/Classes/ServiceProvider.php
@@ -58,6 +58,7 @@ class ServiceProvider extends AbstractServiceProvider
             Database\ConnectionPool::class => self::getConnectionPool(...),
             Database\DriverMiddlewareService::class => self::getDriverMiddlewaresService(...),
             Charset\CharsetConverter::class => self::getCharsetConverter(...),
+            Configuration\Loader\YamlFileLoader::class => self::getYamlFileLoader(...),
             Configuration\SiteConfiguration::class => self::getSiteConfiguration(...),
             Command\ListCommand::class => self::getListCommand(...),
             HelpCommand::class => self::getHelpCommand(...),
@@ -178,6 +179,11 @@ class ServiceProvider extends AbstractServiceProvider
         return self::new($container, Charset\CharsetConverter::class);
     }
 
+    public static function getYamlFileLoader(ContainerInterface $container): Configuration\Loader\YamlFileLoader
+    {
+        return self::new($container, Configuration\Loader\YamlFileLoader::class);
+    }
+
     public static function getSiteConfiguration(ContainerInterface $container): Configuration\SiteConfiguration
     {
         return self::new($container, Configuration\SiteConfiguration::class, [
diff --git a/typo3/sysext/install/Classes/ServiceProvider.php b/typo3/sysext/install/Classes/ServiceProvider.php
index b9c09ad90807..13e7f2783f1a 100644
--- a/typo3/sysext/install/Classes/ServiceProvider.php
+++ b/typo3/sysext/install/Classes/ServiceProvider.php
@@ -109,7 +109,6 @@ class ServiceProvider extends AbstractServiceProvider
             Database\PermissionsCheck::class => self::getPermissionsCheck(...),
             Mailer::class => self::getMailer(...),
             Updates\DatabaseUpdatedPrerequisite::class => self::getDatabaseUpdatedPrerequisite(...),
-            YamlFileLoader::class => self::getYamlFileLoader(...),
         ];
     }
 
@@ -437,11 +436,6 @@ class ServiceProvider extends AbstractServiceProvider
         ]);
     }
 
-    public static function getYamlFileLoader(ContainerInterface $container): YamlFileLoader
-    {
-        return new YamlFileLoader();
-    }
-
     public static function configureCommands(ContainerInterface $container, CommandRegistry $commandRegistry): CommandRegistry
     {
         $commandRegistry->addLazyCommand(
-- 
GitLab