From 2f2252cfbaca3e8d72eb32d0becd16c2926cc80f Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Tue, 11 Aug 2020 22:38:14 +0200
Subject: [PATCH] Use autowiring where possible in server container

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
---
 lib/private/Server.php | 144 ++++++-----------------------------------
 1 file changed, 19 insertions(+), 125 deletions(-)

diff --git a/lib/private/Server.php b/lib/private/Server.php
index 04ef2c6f502..0aba31d35a9 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -93,6 +93,7 @@ use OC\Files\Node\HookConnector;
 use OC\Files\Node\LazyRoot;
 use OC\Files\Node\Root;
 use OC\Files\Storage\StorageFactory;
+use OC\Files\Type\Loader;
 use OC\Files\View;
 use OC\FullTextSearch\FullTextSearchManager;
 use OC\Http\Client\ClientService;
@@ -121,7 +122,6 @@ use OC\Security\CredentialsManager;
 use OC\Security\Crypto;
 use OC\Security\CSP\ContentSecurityPolicyManager;
 use OC\Security\CSP\ContentSecurityPolicyNonceManager;
-use OC\Security\CSRF\CsrfTokenGenerator;
 use OC\Security\CSRF\CsrfTokenManager;
 use OC\Security\CSRF\TokenStorage\SessionStorage;
 use OC\Security\Hasher;
@@ -132,9 +132,7 @@ use OC\Share20\ProviderFactory;
 use OC\Share20\ShareHelper;
 use OC\SystemTag\ManagerFactory as SystemTagManagerFactory;
 use OC\Tagging\TagMapper;
-use OC\Template\IconsCacher;
 use OC\Template\JSCombiner;
-use OC\Template\SCSSCacher;
 use OCA\Theming\ImageManager;
 use OCA\Theming\ThemingDefaults;
 use OCA\Theming\Util;
@@ -258,6 +256,7 @@ class Server extends ServerContainer implements IServerContainer {
 
 		// To find out if we are running from CLI or not
 		$this->registerParameter('isCLI', \OC::$CLI);
+		$this->registerParameter('serverRoot', \OC::$SERVERROOT);
 
 		$this->registerService(ContainerInterface::class, function (ContainerInterface $c) {
 			return $c;
@@ -345,14 +344,9 @@ class Server extends ServerContainer implements IServerContainer {
 
 			return new Encryption\Keys\Storage($view, $util);
 		});
-		$this->registerService('TagMapper', function (Server $c) {
-			return new TagMapper($c->getDatabaseConnection());
-		});
+		$this->registerAlias('TagMapper', TagMapper::class);
 
-		$this->registerService(\OCP\ITagManager::class, function (Server $c) {
-			$tagMapper = $c->query('TagMapper');
-			return new TagManager($tagMapper, $c->getUserSession());
-		});
+		$this->registerAlias(\OCP\ITagManager::class, TagManager::class);
 		$this->registerDeprecatedAlias('TagManager', \OCP\ITagManager::class);
 
 		$this->registerService('SystemTagManagerFactory', function (Server $c) {
@@ -477,10 +471,6 @@ class Server extends ServerContainer implements IServerContainer {
 			return new Store($session, $logger, $tokenProvider);
 		});
 		$this->registerAlias(IStore::class, Store::class);
-		$this->registerService(Authentication\Token\DefaultTokenMapper::class, function (Server $c) {
-			$dbConnection = $c->getDatabaseConnection();
-			return new Authentication\Token\DefaultTokenMapper($dbConnection);
-		});
 		$this->registerAlias(IProvider::class, Authentication\Token\Manager::class);
 
 		$this->registerService(\OC\User\Session::class, function (Server $c) {
@@ -614,11 +604,6 @@ class Server extends ServerContainer implements IServerContainer {
 		$this->registerAlias(INavigationManager::class, \OC\NavigationManager::class);
 		$this->registerDeprecatedAlias('NavigationManager', INavigationManager::class);
 
-		$this->registerService(\OC\AllConfig::class, function (Server $c) {
-			return new \OC\AllConfig(
-				$c->getSystemConfig()
-			);
-		});
 		$this->registerDeprecatedAlias('AllConfig', \OC\AllConfig::class);
 		$this->registerAlias(\OCP\IConfig::class, \OC\AllConfig::class);
 
@@ -627,9 +612,6 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('SystemConfig', \OC\SystemConfig::class);
 
-		$this->registerService(\OC\AppConfig::class, function (Server $c) {
-			return new \OC\AppConfig($c->getDatabaseConnection());
-		});
 		$this->registerDeprecatedAlias('AppConfig', \OC\AppConfig::class);
 		$this->registerAlias(IAppConfig::class, \OC\AppConfig::class);
 
@@ -745,14 +727,7 @@ class Server extends ServerContainer implements IServerContainer {
 			return new LogFactory($c, $this->getSystemConfig());
 		});
 
-		$this->registerService(IJobList::class, function (Server $c) {
-			$config = $c->getConfig();
-			return new \OC\BackgroundJob\JobList(
-				$c->getDatabaseConnection(),
-				$config,
-				new TimeFactory()
-			);
-		});
+		$this->registerAlias(IJobList::class, \OC\BackgroundJob\JobList::class);
 		$this->registerDeprecatedAlias('JobList', IJobList::class);
 
 		$this->registerService(IRouter::class, function (Server $c) {
@@ -767,9 +742,7 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('Router', IRouter::class);
 
-		$this->registerService(ISearch::class, function ($c) {
-			return new Search();
-		});
+		$this->registerAlias(ISearch::class, Search::class);
 		$this->registerDeprecatedAlias('Search', ISearch::class);
 
 		$this->registerService(\OC\Security\RateLimiting\Backend\IBackend::class, function ($c) {
@@ -779,24 +752,16 @@ class Server extends ServerContainer implements IServerContainer {
 			);
 		});
 
-		$this->registerService(\OCP\Security\ISecureRandom::class, function ($c) {
-			return new SecureRandom();
-		});
+		$this->registerAlias(\OCP\Security\ISecureRandom::class, SecureRandom::class);
 		$this->registerDeprecatedAlias('SecureRandom', \OCP\Security\ISecureRandom::class);
 
-		$this->registerService(ICrypto::class, function (Server $c) {
-			return new Crypto($c->getConfig(), $c->getSecureRandom());
-		});
+		$this->registerAlias(ICrypto::class, Crypto::class);
 		$this->registerDeprecatedAlias('Crypto', ICrypto::class);
 
-		$this->registerService(IHasher::class, function (Server $c) {
-			return new Hasher($c->getConfig());
-		});
+		$this->registerAlias(IHasher::class, Hasher::class);
 		$this->registerDeprecatedAlias('Hasher', IHasher::class);
 
-		$this->registerService(ICredentialsManager::class, function (Server $c) {
-			return new CredentialsManager($c->getCrypto(), $c->getDatabaseConnection());
-		});
+		$this->registerAlias(ICredentialsManager::class, CredentialsManager::class);
 		$this->registerDeprecatedAlias('CredentialsManager', ICredentialsManager::class);
 
 		$this->registerService(IDBConnection::class, function (Server $c) {
@@ -850,12 +815,6 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('QueryLogger', IQueryLogger::class);
 
-		$this->registerService(TempManager::class, function (Server $c) {
-			return new TempManager(
-				$c->getLogger(),
-				$c->getConfig()
-			);
-		});
 		$this->registerDeprecatedAlias('TempManager', TempManager::class);
 		$this->registerAlias(ITempManager::class, TempManager::class);
 
@@ -873,12 +832,7 @@ class Server extends ServerContainer implements IServerContainer {
 		$this->registerDeprecatedAlias('AppManager', AppManager::class);
 		$this->registerAlias(IAppManager::class, AppManager::class);
 
-		$this->registerService(IDateTimeZone::class, function (Server $c) {
-			return new DateTimeZone(
-				$c->getConfig(),
-				$c->getSession()
-			);
-		});
+		$this->registerAlias(IDateTimeZone::class, DateTimeZone::class);
 		$this->registerDeprecatedAlias('DateTimeZone', IDateTimeZone::class);
 
 		$this->registerService(IDateTimeFormatter::class, function (Server $c) {
@@ -917,9 +871,7 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('MountConfigManager', IMountProviderCollection::class);
 
-		$this->registerService('IniWrapper', function ($c) {
-			return new IniGetWrapper();
-		});
+		$this->registerAlias('IniWrapper', IniGetWrapper::class);
 		$this->registerService('AsyncCommandBus', function (Server $c) {
 			$busClass = $c->getConfig()->getSystemValue('commandbus');
 			if ($busClass) {
@@ -936,17 +888,7 @@ class Server extends ServerContainer implements IServerContainer {
 			}
 		});
 		$this->registerAlias(IBus::class, 'AsyncCommandBus');
-		$this->registerService('TrustedDomainHelper', function ($c) {
-			return new TrustedDomainHelper($this->getConfig());
-		});
-		$this->registerService(Throttler::class, function (Server $c) {
-			return new Throttler(
-				$c->getDatabaseConnection(),
-				new TimeFactory(),
-				$c->getLogger(),
-				$c->getConfig()
-			);
-		});
+		$this->registerAlias('TrustedDomainHelper', TrustedDomainHelper::class);
 		$this->registerDeprecatedAlias('Throttler', Throttler::class);
 		$this->registerService('IntegrityCodeChecker', function (Server $c) {
 			// IConfig and IAppManager requires a working database. This code
@@ -1052,9 +994,7 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('LockingProvider', ILockingProvider::class);
 
-		$this->registerService(IMountManager::class, function () {
-			return new \OC\Files\Mount\Manager();
-		});
+		$this->registerAlias(IMountManager::class, \OC\Files\Mount\Manager::class);
 		$this->registerDeprecatedAlias('MountManager', IMountManager::class);
 
 		$this->registerService(IMimeTypeDetector::class, function (Server $c) {
@@ -1067,21 +1007,12 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('MimeTypeDetector', IMimeTypeDetector::class);
 
-		$this->registerService(IMimeTypeLoader::class, function (Server $c) {
-			return new \OC\Files\Type\Loader(
-				$c->getDatabaseConnection()
-			);
-		});
+		$this->registerAlias(IMimeTypeLoader::class, Loader::class);
 		$this->registerDeprecatedAlias('MimeTypeLoader', IMimeTypeLoader::class);
 		$this->registerService(BundleFetcher::class, function () {
 			return new BundleFetcher($this->getL10N('lib'));
 		});
-		$this->registerService(\OCP\Notification\IManager::class, function (Server $c) {
-			return new Manager(
-				$c->query(IValidator::class),
-				$c->getLogger()
-			);
-		});
+		$this->registerAlias(\OCP\Notification\IManager::class, Manager::class);
 		$this->registerDeprecatedAlias('NotificationManager', \OCP\Notification\IManager::class);
 
 		$this->registerService(CapabilitiesManager::class, function (Server $c) {
@@ -1119,6 +1050,7 @@ class Server extends ServerContainer implements IServerContainer {
 		});
 		$this->registerDeprecatedAlias('CommentsManager', ICommentsManager::class);
 
+		$this->registerAlias(\OC_Defaults::class, 'ThemingDefaults');
 		$this->registerService('ThemingDefaults', function (Server $c) {
 			/*
 			 * Dark magic for autoloader.
@@ -1147,19 +1079,6 @@ class Server extends ServerContainer implements IServerContainer {
 			}
 			return new \OC_Defaults();
 		});
-		$this->registerService(SCSSCacher::class, function (Server $c) {
-			return new SCSSCacher(
-				$c->getLogger(),
-				$c->query(\OC\Files\AppData\Factory::class),
-				$c->getURLGenerator(),
-				$c->getConfig(),
-				$c->getThemingDefaults(),
-				\OC::$SERVERROOT,
-				$this->getMemCacheFactory(),
-				$c->query(IconsCacher::class),
-				new TimeFactory()
-			);
-		});
 		$this->registerService(JSCombiner::class, function (Server $c) {
 			return new JSCombiner(
 				$c->getAppDataDir('js'),
@@ -1198,14 +1117,6 @@ class Server extends ServerContainer implements IServerContainer {
 				$request
 			);
 		});
-		$this->registerService(CsrfTokenManager::class, function (Server $c) {
-			$tokenGenerator = new CsrfTokenGenerator($c->getSecureRandom());
-
-			return new CsrfTokenManager(
-				$tokenGenerator,
-				$c->query(SessionStorage::class)
-			);
-		});
 		$this->registerDeprecatedAlias('CsrfTokenManager', CsrfTokenManager::class);
 		$this->registerService(SessionStorage::class, function (Server $c) {
 			return new SessionStorage($c->getSession());
@@ -1213,13 +1124,6 @@ class Server extends ServerContainer implements IServerContainer {
 		$this->registerAlias(\OCP\Security\IContentSecurityPolicyManager::class, ContentSecurityPolicyManager::class);
 		$this->registerDeprecatedAlias('ContentSecurityPolicyManager', ContentSecurityPolicyManager::class);
 
-		$this->registerService('ContentSecurityPolicyNonceManager', function (Server $c) {
-			return new ContentSecurityPolicyNonceManager(
-				$c->getCsrfTokenManager(),
-				$c->getRequest()
-			);
-		});
-
 		$this->registerService(\OCP\Share\IManager::class, function (Server $c) {
 			$config = $c->getConfig();
 			$factoryClass = $config->getSystemValue('sharing.managerFactory', ProviderFactory::class);
@@ -1352,20 +1256,10 @@ class Server extends ServerContainer implements IServerContainer {
 			return new InstanceFactory($memcacheFactory->createLocal('remoteinstance.'), $c->getHTTPClientService());
 		});
 
-		$this->registerService(IContactsStore::class, function (Server $c) {
-			return new ContactsStore(
-				$c->getContactsManager(),
-				$c->getConfig(),
-				$c->getUserManager(),
-				$c->getGroupManager()
-			);
-		});
 		$this->registerAlias(IContactsStore::class, ContactsStore::class);
 		$this->registerAlias(IAccountManager::class, AccountManager::class);
 
-		$this->registerService(IStorageFactory::class, function () {
-			return new StorageFactory();
-		});
+		$this->registerAlias(IStorageFactory::class, StorageFactory::class);
 
 		$this->registerAlias(IDashboardManager::class, DashboardManager::class);
 		$this->registerAlias(\OCP\Dashboard\IManager::class, \OC\Dashboard\Manager::class);
@@ -2165,7 +2059,7 @@ class Server extends ServerContainer implements IServerContainer {
 	 * @deprecated
 	 */
 	public function getContentSecurityPolicyNonceManager() {
-		return $this->query('ContentSecurityPolicyNonceManager');
+		return $this->query(ContentSecurityPolicyNonceManager::class);
 	}
 
 	/**
-- 
GitLab