Use magic DI

This commit is contained in:
Joas Schilling 2016-09-20 01:15:24 +02:00
parent f4a4578f0d
commit 1944d9b3ab
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
5 changed files with 17 additions and 104 deletions

View File

@ -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)) {

View File

@ -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)));

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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);
}