From 1944d9b3abb5f3f20fa5e2ba2004dbd7994bb13f Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Tue, 20 Sep 2016 01:15:24 +0200
Subject: [PATCH] Use magic DI

---
 apps/dav/appinfo/app.php                      |   5 +-
 apps/dav/appinfo/register_command.php         |   4 +-
 apps/dav/lib/AppInfo/Application.php          | 104 ++----------------
 apps/dav/lib/CalDAV/BirthdayService.php       |   2 +-
 .../tests/unit/AppInfo/ApplicationTest.php    |   6 +-
 5 files changed, 17 insertions(+), 104 deletions(-)

diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php
index ebc1d09e3f1..0d417fd3fed 100644
--- a/apps/dav/appinfo/app.php
+++ b/apps/dav/appinfo/app.php
@@ -23,6 +23,7 @@
  */
 
 use OCA\DAV\AppInfo\Application;
+use OCA\DAV\CardDAV\CardDavBackend;
 use Symfony\Component\EventDispatcher\GenericEvent;
 
 $app = new Application();
@@ -36,8 +37,8 @@ $eventDispatcher = \OC::$server->getEventDispatcher();
 
 $eventDispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
 	function(GenericEvent $event) use ($app) {
-		/** @var \OCA\DAV\CardDAV\CardDavBackend $cardDavBackend */
-		$cardDavBackend = $app->getContainer()->query('CardDavBackend');
+		/** @var CardDavBackend $cardDavBackend */
+		$cardDavBackend = $app->getContainer()->query(CardDavBackend::class);
 		$addressBookUri = $event->getSubject();
 		$addressBook = $cardDavBackend->getAddressBooksByUri('principals/system/system', $addressBookUri);
 		if (!is_null($addressBook)) {
diff --git a/apps/dav/appinfo/register_command.php b/apps/dav/appinfo/register_command.php
index 7595c1b8335..57bf8ff5dd9 100644
--- a/apps/dav/appinfo/register_command.php
+++ b/apps/dav/appinfo/register_command.php
@@ -34,6 +34,6 @@ $app = new Application();
 
 /** @var Symfony\Component\Console\Application $application */
 $application->add(new CreateCalendar($userManager, $groupManager, $dbConnection));
-$application->add(new CreateAddressBook($userManager, $app->getContainer()->query('CardDavBackend')));
+$application->add(new CreateAddressBook($userManager, $app->getContainer()->query(\OCA\DAV\CardDAV\CardDavBackend::class)));
 $application->add(new SyncSystemAddressBook($app->getSyncService()));
-$application->add(new SyncBirthdayCalendar($userManager, $app->getContainer()->query('BirthdayService')));
+$application->add(new SyncBirthdayCalendar($userManager, $app->getContainer()->query(\OCA\DAV\CalDAV\BirthdayService::class)));
diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php
index 17145847fa1..dc3ce7e8bb2 100644
--- a/apps/dav/lib/AppInfo/Application.php
+++ b/apps/dav/lib/AppInfo/Application.php
@@ -25,110 +25,20 @@
 namespace OCA\DAV\AppInfo;
 
 use OCA\DAV\CalDAV\BirthdayService;
-use OCA\DAV\CalDAV\CalDavBackend;
-use OCA\DAV\CardDAV\CardDavBackend;
 use OCA\DAV\CardDAV\ContactsManager;
-use OCA\DAV\CardDAV\SyncJob;
 use OCA\DAV\CardDAV\SyncService;
-use OCA\DAV\Connector\Sabre\Principal;
-use OCA\DAV\DAV\GroupPrincipalBackend;
 use OCA\DAV\HookManager;
-use OCA\DAV\Migration\Classification;
-use OCA\DAV\Migration\GenerateBirthdays;
 use \OCP\AppFramework\App;
-use OCP\AppFramework\IAppContainer;
 use OCP\Contacts\IManager;
-use OCP\IUser;
-use Sabre\VObject\Reader;
 use Symfony\Component\EventDispatcher\GenericEvent;
 
 class Application extends App {
 
 	/**
 	 * Application constructor.
-	 *
-	 * @param array $urlParams
 	 */
-	public function __construct (array $urlParams=array()) {
-		parent::__construct('dav', $urlParams);
-
-		$container = $this->getContainer();
-		$container->registerService('ContactsManager', function($c) {
-			/** @var IAppContainer $c */
-			return new ContactsManager(
-				$c->query('CardDavBackend')
-			);
-		});
-
-		$container->registerService('HookManager', function($c) {
-			/** @var IAppContainer $c */
-			return new HookManager(
-				$c->getServer()->getUserManager(),
-				$c->query('SyncService'),
-				$c->query('CalDavBackend'),
-				$c->query('CardDavBackend')
-			);
-		});
-
-		$container->registerService('SyncService', function($c) {
-			/** @var IAppContainer $c */
-			return new SyncService(
-				$c->query('CardDavBackend'),
-				$c->getServer()->getUserManager(),
-				$c->getServer()->getLogger()
-			);
-		});
-
-		$container->registerService('CardDavBackend', function($c) {
-			/** @var IAppContainer $c */
-			$db = $c->getServer()->getDatabaseConnection();
-			$dispatcher = $c->getServer()->getEventDispatcher();
-			$principal = new Principal(
-				$c->getServer()->getUserManager(),
-				$c->getServer()->getGroupManager()
-			);
-			return new CardDavBackend($db, $principal, $c->getServer()->getUserManager(), $dispatcher);
-		});
-
-		$container->registerService('CalDavBackend', function($c) {
-			/** @var IAppContainer $c */
-			$db = $c->getServer()->getDatabaseConnection();
-			$principal = new Principal(
-				$c->getServer()->getUserManager(),
-				$c->getServer()->getGroupManager()
-			);
-			return new CalDavBackend($db, $principal, $c->getServer()->getUserManager());
-		});
-
-		$container->registerService('BirthdayService', function($c) {
-			/** @var IAppContainer $c */
-			$g = new GroupPrincipalBackend(
-				$c->getServer()->getGroupManager()
-			);
-			return new BirthdayService(
-				$c->query('CalDavBackend'),
-				$c->query('CardDavBackend'),
-				$g
-			);
-		});
-
-		$container->registerService('OCA\DAV\Migration\Classification', function ($c) {
-			/** @var IAppContainer $c */
-			return new Classification(
-				$c->query('CalDavBackend'),
-				$c->getServer()->getUserManager()
-			);
-		});
-
-		$container->registerService('OCA\DAV\Migration\GenerateBirthdays', function ($c) {
-			/** @var IAppContainer $c */
-			/** @var BirthdayService $b */
-			$b = $c->query('BirthdayService');
-			return new GenerateBirthdays(
-				$b,
-				$c->getServer()->getUserManager()
-			);
-		});
+	public function __construct() {
+		parent::__construct('dav');
 	}
 
 	/**
@@ -137,20 +47,20 @@ class Application extends App {
 	 */
 	public function setupContactsProvider(IManager $contactsManager, $userID) {
 		/** @var ContactsManager $cm */
-		$cm = $this->getContainer()->query('ContactsManager');
+		$cm = $this->getContainer()->query(ContactsManager::class);
 		$urlGenerator = $this->getContainer()->getServer()->getURLGenerator();
 		$cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
 	}
 
 	public function registerHooks() {
 		/** @var HookManager $hm */
-		$hm = $this->getContainer()->query('HookManager');
+		$hm = $this->getContainer()->query(HookManager::class);
 		$hm->setup();
 
 		$listener = function($event) {
 			if ($event instanceof GenericEvent) {
 				/** @var BirthdayService $b */
-				$b = $this->getContainer()->query('BirthdayService');
+				$b = $this->getContainer()->query(BirthdayService::class);
 				$b->onCardChanged(
 					$event->getArgument('addressBookId'),
 					$event->getArgument('cardUri'),
@@ -165,7 +75,7 @@ class Application extends App {
 		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function($event) {
 			if ($event instanceof GenericEvent) {
 				/** @var BirthdayService $b */
-				$b = $this->getContainer()->query('BirthdayService');
+				$b = $this->getContainer()->query(BirthdayService::class);
 				$b->onCardDeleted(
 					$event->getArgument('addressBookId'),
 					$event->getArgument('cardUri')
@@ -175,7 +85,7 @@ class Application extends App {
 	}
 
 	public function getSyncService() {
-		return $this->getContainer()->query('SyncService');
+		return $this->getContainer()->query(SyncService::class);
 	}
 
 }
diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php
index 31a6c73f484..ab2794e67db 100644
--- a/apps/dav/lib/CalDAV/BirthdayService.php
+++ b/apps/dav/lib/CalDAV/BirthdayService.php
@@ -50,7 +50,7 @@ class BirthdayService {
 	 * @param CardDavBackend $cardDavBackEnd
 	 * @param GroupPrincipalBackend $principalBackend
 	 */
-	public function __construct($calDavBackEnd, $cardDavBackEnd, $principalBackend) {
+	public function __construct(CalDavBackend $calDavBackEnd, CardDavBackend $cardDavBackEnd, GroupPrincipalBackend $principalBackend) {
 		$this->calDavBackEnd = $calDavBackEnd;
 		$this->cardDavBackEnd = $cardDavBackEnd;
 		$this->principalBackend = $principalBackend;
diff --git a/apps/dav/tests/unit/AppInfo/ApplicationTest.php b/apps/dav/tests/unit/AppInfo/ApplicationTest.php
index d5fb4e811d2..8656ce93519 100644
--- a/apps/dav/tests/unit/AppInfo/ApplicationTest.php
+++ b/apps/dav/tests/unit/AppInfo/ApplicationTest.php
@@ -24,6 +24,8 @@
 namespace OCA\DAV\Tests\unit\AppInfo;
 
 use OCA\DAV\AppInfo\Application;
+use OCA\DAV\CardDAV\CardDavBackend;
+use OCA\DAV\CardDAV\ContactsManager;
 use OCP\Contacts\IManager;
 use Test\TestCase;
 
@@ -40,9 +42,9 @@ class ApplicationTest extends TestCase {
 		$c = $app->getContainer();
 
 		// assert service instances in the container are properly setup
-		$s = $c->query('ContactsManager');
+		$s = $c->query(ContactsManager::class);
 		$this->assertInstanceOf('OCA\DAV\CardDAV\ContactsManager', $s);
-		$s = $c->query('CardDavBackend');
+		$s = $c->query(CardDavBackend::class);
 		$this->assertInstanceOf('OCA\DAV\CardDAV\CardDavBackend', $s);
 	}
 
-- 
GitLab