Merge pull request #21793 from owncloud/di_shareproviderfactory

Properly DI the servercontainer into share provider factory
This commit is contained in:
Thomas Müller 2016-01-20 11:32:59 +01:00
commit 5652981600
4 changed files with 28 additions and 6 deletions

View file

@ -568,7 +568,7 @@ class Server extends ServerContainer implements IServerContainer {
$config = $c->getConfig();
$factoryClass = $config->getSystemValue('sharing.managerFactory', '\OC\Share20\ProviderFactory');
/** @var \OC\Share20\IProviderFactory $factory */
$factory = new $factoryClass();
$factory = new $factoryClass($this);
$manager = new \OC\Share20\Manager(
$c->getLogger(),

View file

@ -21,6 +21,7 @@
namespace OC\Share20;
use OC\Share20\Exception\ProviderException;
use OCP\IServerContainer;
/**
* Interface IProviderFactory
@ -30,6 +31,12 @@ use OC\Share20\Exception\ProviderException;
*/
interface IProviderFactory {
/**
* IProviderFactory constructor.
* @param IServerContainer $serverContainer
*/
public function __construct(IServerContainer $serverContainer);
/**
* @param string $id
* @return IShareProvider

View file

@ -21,6 +21,7 @@
namespace OC\Share20;
use OC\Share20\Exception\ProviderException;
use OCP\IServerContainer;
/**
* Class ProviderFactory
@ -29,9 +30,19 @@ use OC\Share20\Exception\ProviderException;
*/
class ProviderFactory implements IProviderFactory {
/** @var IServerContainer */
private $serverContainer;
/** @var DefaultShareProvider */
private $defaultProvider = null;
/**
* IProviderFactory constructor.
* @param IServerContainer $serverContainer
*/
public function __construct(IServerContainer $serverContainer) {
$this->serverContainer = $serverContainer;
}
/**
* Create the default share provider.
*
@ -40,10 +51,10 @@ class ProviderFactory implements IProviderFactory {
protected function defaultShareProvider() {
if ($this->defaultProvider === null) {
$this->defaultProvider = new DefaultShareProvider(
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserManager(),
\OC::$server->getGroupManager(),
\OC::$server->getRootFolder()
$this->serverContainer->getDatabaseConnection(),
$this->serverContainer->getUserManager(),
$this->serverContainer->getGroupManager(),
$this->serverContainer->getRootFolder()
);
}

View file

@ -86,7 +86,7 @@ class ManagerTest extends \Test\TestCase {
return vsprintf($text, $parameters);
}));
$this->factory = new DummyFactory();
$this->factory = new DummyFactory(\OC::$server);
$this->manager = new Manager(
$this->logger,
@ -1499,6 +1499,10 @@ class DummyFactory implements IProviderFactory {
/** @var IShareProvider */
private $provider;
public function __construct(\OCP\IServerContainer $serverContainer) {
}
/**
* @param IShareProvider $provider
*/