mirror of
https://github.com/nextcloud/server.git
synced 2026-06-12 18:21:40 -04:00
refactor(dependency-injection): Port away from query where possible
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
This commit is contained in:
parent
81d0c73700
commit
03f5effc75
27 changed files with 205 additions and 197 deletions
|
|
@ -137,20 +137,20 @@ class Application extends App implements IBootstrap {
|
|||
*/
|
||||
$context->registerService(IProvider::class, function (IAppContainer $appContainer) {
|
||||
/** @var IServerContainer $serverContainer */
|
||||
$serverContainer = $appContainer->query(IServerContainer::class);
|
||||
return $serverContainer->query(IProvider::class);
|
||||
$serverContainer = $appContainer->get(IServerContainer::class);
|
||||
return $serverContainer->get(IProvider::class);
|
||||
});
|
||||
$context->registerService(IManager::class, function (IAppContainer $appContainer) {
|
||||
/** @var IServerContainer $serverContainer */
|
||||
$serverContainer = $appContainer->query(IServerContainer::class);
|
||||
$serverContainer = $appContainer->get(IServerContainer::class);
|
||||
return $serverContainer->getSettingsManager();
|
||||
});
|
||||
|
||||
$context->registerService(NewUserMailHelper::class, function (IAppContainer $appContainer) {
|
||||
/** @var Server $server */
|
||||
$server = $appContainer->query(IServerContainer::class);
|
||||
$server = $appContainer->get(IServerContainer::class);
|
||||
/** @var Defaults $defaults */
|
||||
$defaults = $server->query(Defaults::class);
|
||||
$defaults = $server->get(Defaults::class);
|
||||
|
||||
return new NewUserMailHelper(
|
||||
$defaults,
|
||||
|
|
@ -234,7 +234,7 @@ class Application extends App implements IBootstrap {
|
|||
*/
|
||||
public function onChangePassword(array $parameters) {
|
||||
/** @var Hooks $hooks */
|
||||
$hooks = $this->getContainer()->query(Hooks::class);
|
||||
$hooks = $this->getContainer()->get(Hooks::class);
|
||||
$hooks->onChangePassword($parameters['uid']);
|
||||
}
|
||||
|
||||
|
|
@ -251,7 +251,7 @@ class Application extends App implements IBootstrap {
|
|||
}
|
||||
|
||||
/** @var Hooks $hooks */
|
||||
$hooks = $this->getContainer()->query(Hooks::class);
|
||||
$hooks = $this->getContainer()->get(Hooks::class);
|
||||
$hooks->onChangeEmail($parameters['user'], $parameters['old_value']);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3745,11 +3745,6 @@
|
|||
<code><![CDATA[isAdmin]]></code>
|
||||
</UndefinedInterfaceMethod>
|
||||
</file>
|
||||
<file src="lib/private/InitialStateService.php">
|
||||
<UndefinedInterfaceMethod>
|
||||
<code><![CDATA[query]]></code>
|
||||
</UndefinedInterfaceMethod>
|
||||
</file>
|
||||
<file src="lib/private/IntegrityCheck/Checker.php">
|
||||
<InvalidArrayAccess>
|
||||
<code><![CDATA[$x509->getDN(X509::DN_OPENSSL)['CN']]]></code>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ use OCP\Diagnostics\IEventLogger;
|
|||
use OCP\HintException;
|
||||
use OCP\IRequest;
|
||||
use OCP\Profiler\IProfiler;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
|
||||
/**
|
||||
* Entry point for every request in your app. You can consider this as your
|
||||
|
|
@ -117,7 +118,7 @@ class App {
|
|||
// first try $controllerName then go for \OCA\AppName\Controller\$controllerName
|
||||
try {
|
||||
$controller = $container->get($controllerName);
|
||||
} catch (QueryException $e) {
|
||||
} catch (ContainerExceptionInterface) {
|
||||
if (str_contains($controllerName, '\\Controller\\')) {
|
||||
// This is from a global registered app route that is not enabled.
|
||||
[/*OC(A)*/, $app, /* Controller/Name*/] = explode('\\', $controllerName, 3);
|
||||
|
|
@ -130,7 +131,7 @@ class App {
|
|||
$appNameSpace = self::buildAppNamespace($appName);
|
||||
}
|
||||
$controllerName = $appNameSpace . '\\Controller\\' . $controllerName;
|
||||
$controller = $container->query($controllerName);
|
||||
$controller = $container->get($controllerName);
|
||||
}
|
||||
|
||||
$eventLogger->end('app:controller:load');
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class Coordinator {
|
|||
$this->eventLogger->start("bootstrap:register_app:$appId:application", "Load `Application` instance for $appId");
|
||||
try {
|
||||
/** @var IBootstrap&App $application */
|
||||
$application = $this->serverContainer->query($applicationClassName);
|
||||
$application = $this->serverContainer->get($applicationClassName);
|
||||
$apps[$appId] = $application;
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Weird, but ok
|
||||
|
|
@ -163,7 +163,7 @@ class Coordinator {
|
|||
$this->eventLogger->start('bootstrap:boot_app:' . $appId, "Call `Application::boot` for $appId");
|
||||
try {
|
||||
/** @var App $application */
|
||||
$application = $this->serverContainer->query($applicationClassName);
|
||||
$application = $this->serverContainer->get($applicationClassName);
|
||||
if ($application instanceof IBootstrap) {
|
||||
/** @var BootContext $context */
|
||||
$context = new BootContext($application->getContainer());
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ use OCP\ISession;
|
|||
use OCP\IURLGenerator;
|
||||
use OCP\IUserSession;
|
||||
use OCP\Security\Ip\IRemoteAddress;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
|
|
@ -263,7 +264,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
|||
* @return string the name of your application
|
||||
*/
|
||||
public function getAppName() {
|
||||
return $this->query('appName');
|
||||
return $this->get('appName');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -293,8 +294,8 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
|||
* @param string $serviceName e.g. 'OCA\Files\Capabilities'
|
||||
*/
|
||||
public function registerCapability($serviceName) {
|
||||
$this->query('OC\CapabilitiesManager')->registerCapability(function () use ($serviceName) {
|
||||
return $this->query($serviceName);
|
||||
$this->get('OC\CapabilitiesManager')->registerCapability(function () use ($serviceName) {
|
||||
return $this->get($serviceName);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -322,10 +323,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
|||
|
||||
try {
|
||||
return $this->queryNoFallback($name);
|
||||
} catch (QueryException $firstException) {
|
||||
} catch (ContainerExceptionInterface $firstException) {
|
||||
try {
|
||||
return $this->getServer()->query($name, $autoload);
|
||||
} catch (QueryException $secondException) {
|
||||
} catch (ContainerExceptionInterface $secondException) {
|
||||
if ($firstException->getCode() === 1) {
|
||||
throw $secondException;
|
||||
}
|
||||
|
|
@ -334,28 +335,30 @@ class DIContainer extends SimpleContainer implements IAppContainer {
|
|||
}
|
||||
}
|
||||
|
||||
public function get(string $id): mixed {
|
||||
return $this->query($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return mixed
|
||||
* @throws QueryException if the query could not be resolved
|
||||
*/
|
||||
public function queryNoFallback($name) {
|
||||
public function queryNoFallback(string $name): mixed {
|
||||
$name = $this->sanitizeName($name);
|
||||
|
||||
if ($this->offsetExists($name)) {
|
||||
return parent::query($name);
|
||||
if ($this->has($name)) {
|
||||
return parent::get($name);
|
||||
} elseif ($this->appName === 'settings' && str_starts_with($name, 'OC\\Settings\\')) {
|
||||
return parent::query($name);
|
||||
return parent::get($name);
|
||||
} elseif ($this->appName === 'core' && str_starts_with($name, 'OC\\Core\\')) {
|
||||
return parent::query($name);
|
||||
return parent::get($name);
|
||||
} elseif (str_starts_with($name, \OC\AppFramework\App::buildAppNamespace($this->appName) . '\\')) {
|
||||
return parent::query($name);
|
||||
return parent::get($name);
|
||||
} elseif (
|
||||
str_starts_with($name, 'OC\\AppFramework\\Services\\')
|
||||
|| str_starts_with($name, 'OC\\AppFramework\\Middleware\\')
|
||||
) {
|
||||
/* AppFramework services are scoped to the application */
|
||||
return parent::query($name);
|
||||
return parent::get($name);
|
||||
}
|
||||
|
||||
throw new QueryException('Could not resolve ' . $name . '!'
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ namespace OC\AppFramework\Utility;
|
|||
use ArrayAccess;
|
||||
use Closure;
|
||||
use OCP\AppFramework\QueryException;
|
||||
use OCP\AppFramework\Services\IAppConfig;
|
||||
use OCP\IContainer;
|
||||
use Pimple\Container;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
|
|
@ -42,7 +43,16 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
* @psalm-return (S is class-string<T> ? T : mixed)
|
||||
*/
|
||||
public function get(string $id): mixed {
|
||||
return $this->query($id);
|
||||
$name = $this->sanitizeName($id);
|
||||
if (isset($this->container[$name])) {
|
||||
return $this->container[$name];
|
||||
}
|
||||
|
||||
$object = $this->resolve($name);
|
||||
$this->registerService($name, function () use ($object) {
|
||||
return $object;
|
||||
});
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function has(string $id): bool {
|
||||
|
|
@ -76,40 +86,50 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
private function buildClassConstructorParameters(\ReflectionMethod $constructor): array {
|
||||
return array_map(function (ReflectionParameter $parameter) {
|
||||
$parameterType = $parameter->getType();
|
||||
|
||||
$resolveName = $parameter->getName();
|
||||
|
||||
if (!($parameterType instanceof ReflectionNamedType)) {
|
||||
return $this->get($resolveName);
|
||||
}
|
||||
|
||||
// try to find out if it is a class or a simple parameter
|
||||
if ($parameterType !== null && ($parameterType instanceof ReflectionNamedType) && !$parameterType->isBuiltin()) {
|
||||
if (!$parameterType->isBuiltin()) {
|
||||
$resolveName = $parameterType->getName();
|
||||
}
|
||||
|
||||
try {
|
||||
$builtIn = $parameterType !== null && ($parameterType instanceof ReflectionNamedType)
|
||||
&& $parameterType->isBuiltin();
|
||||
return $this->query($resolveName, !$builtIn);
|
||||
// Try special variable names like $appName or $user with basic built-in types
|
||||
if ($parameterType->isBuiltin()) {
|
||||
if (isset($this->container[$resolveName])) {
|
||||
return $this->container[$resolveName];
|
||||
}
|
||||
throw new QueryException("Could not resolve variable with name " . $resolveName . ' and build-in type ' . $parameterType->getName());
|
||||
} else {
|
||||
return $this->get($resolveName);
|
||||
}
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Service not found, use the default value when available
|
||||
if ($parameter->isDefaultValueAvailable()) {
|
||||
return $parameter->getDefaultValue();
|
||||
}
|
||||
|
||||
if ($parameterType !== null && ($parameterType instanceof ReflectionNamedType) && !$parameterType->isBuiltin()) {
|
||||
$resolveName = $parameter->getName();
|
||||
try {
|
||||
return $this->query($resolveName);
|
||||
} catch (ContainerExceptionInterface $e2) {
|
||||
// Pass null if typed and nullable
|
||||
if ($parameter->allowsNull() && ($parameterType instanceof ReflectionNamedType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// don't lose the error we got while trying to query by type
|
||||
throw new QueryException($e->getMessage(), (int)$e->getCode(), $e);
|
||||
}
|
||||
if ($parameterType->isBuiltin()) {
|
||||
throw $e;
|
||||
}
|
||||
|
||||
throw $e;
|
||||
// Try to get the class from its type
|
||||
$resolveName = $parameter->getName();
|
||||
try {
|
||||
return $this->get($resolveName);
|
||||
} catch (ContainerExceptionInterface $e2) {
|
||||
// Pass null if typed and nullable
|
||||
if ($parameter->allowsNull()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// don't lose the error we got while trying to query by type
|
||||
throw new QueryException($e->getMessage(), (int)$e->getCode(), $e2);
|
||||
}
|
||||
}
|
||||
}, $constructor->getParameters());
|
||||
}
|
||||
|
|
@ -131,19 +151,15 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
}
|
||||
|
||||
public function query(string $name, bool $autoload = true) {
|
||||
if ($autoload) {
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
$name = $this->sanitizeName($name);
|
||||
if (isset($this->container[$name])) {
|
||||
return $this->container[$name];
|
||||
}
|
||||
|
||||
if ($autoload) {
|
||||
$object = $this->resolve($name);
|
||||
$this->registerService($name, function () use ($object) {
|
||||
return $object;
|
||||
});
|
||||
return $object;
|
||||
}
|
||||
|
||||
throw new QueryNotFoundException('Could not resolve ' . $name . '!');
|
||||
}
|
||||
|
||||
|
|
@ -151,7 +167,7 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
* @param string $name
|
||||
* @param mixed $value
|
||||
*/
|
||||
public function registerParameter($name, $value) {
|
||||
public function registerParameter(string $name, mixed $value): void {
|
||||
$this[$name] = $value;
|
||||
}
|
||||
|
||||
|
|
@ -164,7 +180,7 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
* @param Closure $closure the closure to be called on service creation
|
||||
* @param bool $shared
|
||||
*/
|
||||
public function registerService($name, Closure $closure, $shared = true) {
|
||||
public function registerService(string $name, Closure $closure, bool $shared = true): void {
|
||||
$wrapped = function () use ($closure) {
|
||||
return $closure($this);
|
||||
};
|
||||
|
|
@ -186,7 +202,7 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
* @param string $alias the alias that should be registered
|
||||
* @param string $target the target that should be resolved instead
|
||||
*/
|
||||
public function registerAlias($alias, $target): void {
|
||||
public function registerAlias(string $alias, string $target): void {
|
||||
$this->registerService($alias, function (ContainerInterface $container) use ($target): mixed {
|
||||
return $container->get($target);
|
||||
}, false);
|
||||
|
|
@ -207,11 +223,7 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
}, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return string
|
||||
*/
|
||||
protected function sanitizeName($name) {
|
||||
protected function sanitizeName(string $name): string {
|
||||
if (isset($name[0]) && $name[0] === '\\') {
|
||||
return ltrim($name, '\\');
|
||||
}
|
||||
|
|
@ -221,8 +233,8 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
/**
|
||||
* @deprecated 20.0.0 use \Psr\Container\ContainerInterface::has
|
||||
*/
|
||||
public function offsetExists($id): bool {
|
||||
return $this->container->offsetExists($id);
|
||||
public function offsetExists($offset): bool {
|
||||
return $this->container->offsetExists($offset);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -230,8 +242,8 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
|
|||
* @return mixed
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($id) {
|
||||
return $this->container->offsetGet($id);
|
||||
public function offsetGet($offset) {
|
||||
return $this->container->offsetGet($offset);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class Manager implements IManager {
|
|||
continue;
|
||||
}
|
||||
|
||||
$this->initializedBackends[$backend] = $this->server->query($backend);
|
||||
$this->initializedBackends[$backend] = $this->server->get($backend);
|
||||
}
|
||||
|
||||
return array_values($this->initializedBackends);
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ class Manager implements IManager {
|
|||
* The backend might have services injected that can't be build from the
|
||||
* server container.
|
||||
*/
|
||||
$this->initializedBackends[$backend] = $this->server->query($backend);
|
||||
$this->initializedBackends[$backend] = $this->server->get($backend);
|
||||
}
|
||||
|
||||
return array_values($this->initializedBackends);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use OCP\AppFramework\QueryException;
|
|||
use OCP\Collaboration\Resources\IProvider;
|
||||
use OCP\Collaboration\Resources\IProviderManager;
|
||||
use OCP\IServerContainer;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class ProviderManager implements IProviderManager {
|
||||
|
|
@ -31,8 +32,8 @@ class ProviderManager implements IProviderManager {
|
|||
if ($this->providers !== []) {
|
||||
foreach ($this->providers as $provider) {
|
||||
try {
|
||||
$this->providerInstances[] = $this->serverContainer->query($provider);
|
||||
} catch (QueryException $e) {
|
||||
$this->providerInstances[] = $this->serverContainer->get($provider);
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
$this->logger->error("Could not query resource provider $provider: " . $e->getMessage(), [
|
||||
'exception' => $e,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ use OCP\IDBConnection;
|
|||
use OCP\Migration\IMigrationStep;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Server;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class MigrationService {
|
||||
|
|
@ -479,7 +480,8 @@ class MigrationService {
|
|||
if (!$s instanceof IMigrationStep) {
|
||||
throw new \InvalidArgumentException('Not a valid migration');
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
echo $e->getTraceAsString() . $e->getMessage() . PHP_EOL;
|
||||
if (class_exists($class)) {
|
||||
$s = new $class();
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ use OC\AppFramework\Bootstrap\Coordinator;
|
|||
use OCP\AppFramework\QueryException;
|
||||
use OCP\AppFramework\Services\InitialStateProvider;
|
||||
use OCP\IInitialStateService;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
|
|
@ -92,8 +93,8 @@ class InitialStateService implements IInitialStateService {
|
|||
$initialStates = $context->getInitialStates();
|
||||
foreach ($initialStates as $initialState) {
|
||||
try {
|
||||
$provider = $this->container->query($initialState->getService());
|
||||
} catch (QueryException $e) {
|
||||
$provider = $this->container->get($initialState->getService());
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Log an continue. We can be fault tolerant here.
|
||||
$this->logger->error('Could not load initial state provider dynamically: ' . $e->getMessage(), [
|
||||
'exception' => $e,
|
||||
|
|
|
|||
|
|
@ -257,6 +257,7 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
*/
|
||||
public function __construct($webRoot, \OC\Config $config) {
|
||||
parent::__construct();
|
||||
|
||||
$this->webRoot = $webRoot;
|
||||
|
||||
// To find out if we are running from CLI or not
|
||||
|
|
@ -575,7 +576,7 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
$this->registerService(IFactory::class, function (Server $c) {
|
||||
return new \OC\L10N\Factory(
|
||||
$c->get(\OCP\IConfig::class),
|
||||
$c->getRequest(),
|
||||
$c->get(Request::class),
|
||||
$c->get(IUserSession::class),
|
||||
$c->get(ICacheFactory::class),
|
||||
\OC::$SERVERROOT,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use OC\AppFramework\App;
|
|||
use OC\AppFramework\DependencyInjection\DIContainer;
|
||||
use OC\AppFramework\Utility\SimpleContainer;
|
||||
use OCP\AppFramework\QueryException;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use function explode;
|
||||
use function strtolower;
|
||||
|
||||
|
|
@ -125,7 +126,7 @@ class ServerContainer extends SimpleContainer {
|
|||
// Skip server container query for app namespace classes
|
||||
try {
|
||||
return parent::query($name, false);
|
||||
} catch (QueryException $e) {
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Continue with general autoloading then
|
||||
}
|
||||
// In case the service starts with OCA\ we try to find the service in
|
||||
|
|
@ -133,7 +134,7 @@ class ServerContainer extends SimpleContainer {
|
|||
if (($appContainer = $this->getAppContainerForService($name)) !== null) {
|
||||
try {
|
||||
return $appContainer->queryNoFallback($name);
|
||||
} catch (QueryException $e) {
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Didn't find the service or the respective app container
|
||||
// In this case the service won't be part of the core container,
|
||||
// so we can throw directly
|
||||
|
|
@ -145,13 +146,21 @@ class ServerContainer extends SimpleContainer {
|
|||
try {
|
||||
$appContainer = $this->getAppContainer(strtolower($segments[1]), $segments[1]);
|
||||
return $appContainer->queryNoFallback($name);
|
||||
} catch (QueryException $e) {
|
||||
} catch (ContainerExceptionInterface $e) {
|
||||
// Didn't find the service or the respective app container,
|
||||
// ignore it and fall back to the core container.
|
||||
}
|
||||
}
|
||||
|
||||
return parent::query($name, $autoload);
|
||||
if ($autoload) {
|
||||
return parent::get($name);
|
||||
} else {
|
||||
return parent::query($name, false);
|
||||
}
|
||||
}
|
||||
|
||||
public function get(string $id): mixed {
|
||||
return $this->query($id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -116,13 +116,13 @@ class Streamer {
|
|||
// prevent absolute dirs
|
||||
$internalDir = ltrim($internalDir, '/');
|
||||
|
||||
$userFolder = \OC::$server->get(IRootFolder::class)->get(Filesystem::getRoot());
|
||||
$userFolder = \OCP\Server::get(IRootFolder::class)->get(Filesystem::getRoot());
|
||||
/** @var Folder $dirNode */
|
||||
$dirNode = $userFolder->get($dir);
|
||||
$files = $dirNode->getDirectoryListing();
|
||||
|
||||
/** @var LoggerInterface $logger */
|
||||
$logger = \OC::$server->query(LoggerInterface::class);
|
||||
$logger = \OCP\Server::get(LoggerInterface::class);
|
||||
foreach ($files as $file) {
|
||||
if ($file instanceof File) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ use OCP\Support\Subscription\Exception\AlreadyRegisteredException;
|
|||
use OCP\Support\Subscription\IRegistry;
|
||||
use OCP\Support\Subscription\ISubscription;
|
||||
use OCP\Support\Subscription\ISupportedApps;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class Registry implements IRegistry {
|
||||
|
|
@ -54,8 +55,8 @@ class Registry implements IRegistry {
|
|||
private function getSubscription(): ?ISubscription {
|
||||
if ($this->subscription === null && $this->subscriptionService !== null) {
|
||||
try {
|
||||
$this->subscription = $this->container->query($this->subscriptionService);
|
||||
} catch (QueryException $e) {
|
||||
$this->subscription = $this->container->get($this->subscriptionService);
|
||||
} catch (ContainerExceptionInterface) {
|
||||
// Ignore this
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class App {
|
|||
|
||||
if ($runIsSetupDirectly) {
|
||||
$applicationClassName = get_class($this);
|
||||
$e = new \RuntimeException('App class ' . $applicationClassName . ' is not setup via query() but directly');
|
||||
$e = new \RuntimeException('App class ' . $applicationClassName . ' is not setup via get() but directly');
|
||||
$setUpViaQuery = false;
|
||||
|
||||
$classNameParts = explode('\\', trim($applicationClassName, '\\'));
|
||||
|
|
@ -122,8 +122,8 @@ class App {
|
|||
* parent::__construct('tasks', $params);
|
||||
*
|
||||
* $this->getContainer()->registerService('PageController', function(IAppContainer $c){
|
||||
* $a = $c->query('API');
|
||||
* $r = $c->query('Request');
|
||||
* $a = $c->get('API');
|
||||
* $r = $c->get('Request');
|
||||
* return new PageController($a, $r);
|
||||
* });
|
||||
* }
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ interface IContainer extends ContainerInterface {
|
|||
* @since 6.0.0
|
||||
* @deprecated 20.0.0 use \OCP\AppFramework\Bootstrap\IRegistrationContext::registerParameter
|
||||
*/
|
||||
public function registerParameter($name, $value);
|
||||
public function registerParameter(string $name, mixed $value): void;
|
||||
|
||||
/**
|
||||
* A service is registered in the container where a closure is passed in which will actually
|
||||
|
|
@ -84,7 +84,7 @@ interface IContainer extends ContainerInterface {
|
|||
* @since 6.0.0
|
||||
* @deprecated 20.0.0 use \OCP\AppFramework\Bootstrap\IRegistrationContext::registerService
|
||||
*/
|
||||
public function registerService($name, Closure $closure, $shared = true);
|
||||
public function registerService(string $name, Closure $closure, bool $shared = true): void;
|
||||
|
||||
/**
|
||||
* Shortcut for returning a service from a service under a different key,
|
||||
|
|
@ -95,5 +95,5 @@ interface IContainer extends ContainerInterface {
|
|||
* @since 8.2.0
|
||||
* @deprecated 20.0.0 use \OCP\AppFramework\Bootstrap\IRegistrationContext::registerServiceAlias
|
||||
*/
|
||||
public function registerAlias($alias, $target);
|
||||
public function registerAlias(string $alias, string $target): void;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ class CoordinatorTest extends TestCase {
|
|||
public function testBootAppNotLoadable(): void {
|
||||
$appId = 'settings';
|
||||
$this->serverContainer->expects($this->once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with(Application::class)
|
||||
->willThrowException(new QueryException(''));
|
||||
$this->logger->expects($this->once())
|
||||
|
|
@ -89,7 +89,7 @@ class CoordinatorTest extends TestCase {
|
|||
$appId = 'settings';
|
||||
$mockApp = $this->createMock(Application::class);
|
||||
$this->serverContainer->expects($this->once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with(Application::class)
|
||||
->willReturn($mockApp);
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ class CoordinatorTest extends TestCase {
|
|||
}
|
||||
};
|
||||
$this->serverContainer->expects($this->once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with(Application::class)
|
||||
->willReturn($mockApp);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use OCP\AppFramework\QueryException;
|
|||
use OCP\IConfig;
|
||||
use OCP\IRequestId;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
|
||||
/**
|
||||
* @group DB
|
||||
|
|
@ -138,7 +139,7 @@ class DIContainerTest extends \Test\TestCase {
|
|||
}
|
||||
|
||||
public function testInvalidAppClass(): void {
|
||||
$this->expectException(QueryException::class);
|
||||
$this->container->query('\OCA\Name\Foo');
|
||||
$this->expectException(ContainerExceptionInterface::class);
|
||||
$this->container->get('\OCA\Name\Foo');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,12 +54,12 @@ class DIIntergrationTests extends TestCase {
|
|||
|
||||
$this->server->registerService(ClassB::class, function (SimpleContainer $c) {
|
||||
return new ClassB(
|
||||
$c->query(Interface1::class)
|
||||
$c->get(Interface1::class)
|
||||
);
|
||||
});
|
||||
|
||||
/** @var ClassB $res */
|
||||
$res = $this->container->query(ClassB::class);
|
||||
$res = $this->container->get(ClassB::class);
|
||||
$this->assertSame(ClassA1::class, get_class($res->interface1));
|
||||
}
|
||||
|
||||
|
|
@ -70,12 +70,12 @@ class DIIntergrationTests extends TestCase {
|
|||
|
||||
$this->container->registerService(ClassB::class, function (SimpleContainer $c) {
|
||||
return new ClassB(
|
||||
$c->query(Interface1::class)
|
||||
$c->get(Interface1::class)
|
||||
);
|
||||
});
|
||||
|
||||
/** @var ClassB $res */
|
||||
$res = $this->container->query(ClassB::class);
|
||||
$res = $this->container->get(ClassB::class);
|
||||
$this->assertSame(ClassA1::class, get_class($res->interface1));
|
||||
}
|
||||
|
||||
|
|
@ -90,12 +90,12 @@ class DIIntergrationTests extends TestCase {
|
|||
|
||||
$this->container->registerService(ClassB::class, function (SimpleContainer $c) {
|
||||
return new ClassB(
|
||||
$c->query(Interface1::class)
|
||||
$c->get(Interface1::class)
|
||||
);
|
||||
});
|
||||
|
||||
/** @var ClassB $res */
|
||||
$res = $this->container->query(ClassB::class);
|
||||
$res = $this->container->get(ClassB::class);
|
||||
$this->assertSame(ClassA2::class, get_class($res->interface1));
|
||||
}
|
||||
|
||||
|
|
@ -110,12 +110,12 @@ class DIIntergrationTests extends TestCase {
|
|||
|
||||
$this->server->registerService(ClassB::class, function (SimpleContainer $c) {
|
||||
return new ClassB(
|
||||
$c->query(Interface1::class)
|
||||
$c->get(Interface1::class)
|
||||
);
|
||||
});
|
||||
|
||||
/** @var ClassB $res */
|
||||
$res = $this->container->query(ClassB::class);
|
||||
$res = $this->container->get(ClassB::class);
|
||||
$this->assertSame(ClassA1::class, get_class($res->interface1));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ namespace Test\AppFramework\Utility;
|
|||
|
||||
use OC\AppFramework\Utility\SimpleContainer;
|
||||
use OCP\AppFramework\QueryException;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Container\NotFoundExceptionInterface;
|
||||
|
||||
interface TestInterface {
|
||||
|
|
@ -66,75 +68,66 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
$this->container = new SimpleContainer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testRegister(): void {
|
||||
$this->container->registerParameter('test', 'abc');
|
||||
$this->assertEquals('abc', $this->container->query('test'));
|
||||
$this->assertEquals('abc', $this->container->get('test'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test querying a class that is not registered without autoload enabled
|
||||
*/
|
||||
public function testNothingRegistered(): void {
|
||||
try {
|
||||
$this->container->query('something really hard', false);
|
||||
$this->container->get('something really hard', false);
|
||||
$this->fail('Expected `QueryException` exception was not thrown');
|
||||
} catch (\Throwable $exception) {
|
||||
$this->assertInstanceOf(QueryException::class, $exception);
|
||||
$this->assertInstanceOf(ContainerExceptionInterface::class, $exception);
|
||||
$this->assertInstanceOf(NotFoundExceptionInterface::class, $exception);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test querying a class that is not registered with autoload enabled
|
||||
*/
|
||||
public function testNothingRegistered_autoload(): void {
|
||||
try {
|
||||
$this->container->query('something really hard');
|
||||
$this->container->get('something really hard');
|
||||
$this->fail('Expected `QueryException` exception was not thrown');
|
||||
} catch (\Throwable $exception) {
|
||||
$this->assertInstanceOf(QueryException::class, $exception);
|
||||
$this->assertInstanceOf(ContainerExceptionInterface::class, $exception);
|
||||
$this->assertInstanceOf(NotFoundExceptionInterface::class, $exception);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testNotAClass(): void {
|
||||
$this->expectException(QueryException::class);
|
||||
$this->expectException(ContainerExceptionInterface::class);
|
||||
|
||||
$this->container->query('Test\AppFramework\Utility\TestInterface');
|
||||
$this->container->get('Test\AppFramework\Utility\TestInterface');
|
||||
}
|
||||
|
||||
|
||||
public function testNoConstructorClass(): void {
|
||||
$object = $this->container->query('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$object = $this->container->get('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$this->assertTrue($object instanceof ClassEmptyConstructor);
|
||||
}
|
||||
|
||||
|
||||
public function testInstancesOnlyOnce(): void {
|
||||
$object = $this->container->query('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$object2 = $this->container->query('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$object = $this->container->get('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$object2 = $this->container->get('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
$this->assertSame($object, $object2);
|
||||
}
|
||||
|
||||
public function testConstructorSimple(): void {
|
||||
$this->container->registerParameter('test', 'abc');
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
'Test\AppFramework\Utility\ClassSimpleConstructor'
|
||||
);
|
||||
$this->assertTrue($object instanceof ClassSimpleConstructor);
|
||||
$this->assertEquals('abc', $object->test);
|
||||
}
|
||||
|
||||
|
||||
public function testConstructorComplex(): void {
|
||||
$this->container->registerParameter('test', 'abc');
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
'Test\AppFramework\Utility\ClassComplexConstructor'
|
||||
);
|
||||
$this->assertTrue($object instanceof ClassComplexConstructor);
|
||||
|
|
@ -142,14 +135,13 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
$this->assertEquals('abc', $object->test);
|
||||
}
|
||||
|
||||
|
||||
public function testConstructorComplexInterface(): void {
|
||||
$this->container->registerParameter('test', 'abc');
|
||||
$this->container->registerService(
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function ($c) {
|
||||
return $c->query('Test\AppFramework\Utility\ClassSimpleConstructor');
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function (ContainerInterface $c) {
|
||||
return $c->get('Test\AppFramework\Utility\ClassSimpleConstructor');
|
||||
});
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
'Test\AppFramework\Utility\ClassInterfaceConstructor'
|
||||
);
|
||||
$this->assertTrue($object instanceof ClassInterfaceConstructor);
|
||||
|
|
@ -157,17 +149,16 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
$this->assertEquals('abc', $object->test);
|
||||
}
|
||||
|
||||
|
||||
public function testOverrideService(): void {
|
||||
$this->container->registerService(
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function ($c) {
|
||||
return $c->query('Test\AppFramework\Utility\ClassSimpleConstructor');
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function (ContainerInterface $c) {
|
||||
return $c->get('Test\AppFramework\Utility\ClassSimpleConstructor');
|
||||
});
|
||||
$this->container->registerService(
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function ($c) {
|
||||
return $c->query('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor', function (ContainerInterface $c) {
|
||||
return $c->get('Test\AppFramework\Utility\ClassEmptyConstructor');
|
||||
});
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
'Test\AppFramework\Utility\IInterfaceConstructor'
|
||||
);
|
||||
$this->assertTrue($object instanceof ClassEmptyConstructor);
|
||||
|
|
@ -176,7 +167,7 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
public function testRegisterAliasParamter(): void {
|
||||
$this->container->registerParameter('test', 'abc');
|
||||
$this->container->registerAlias('test1', 'test');
|
||||
$this->assertEquals('abc', $this->container->query('test1'));
|
||||
$this->assertEquals('abc', $this->container->get('test1'));
|
||||
}
|
||||
|
||||
public function testRegisterAliasService(): void {
|
||||
|
|
@ -185,11 +176,11 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
}, true);
|
||||
$this->container->registerAlias('test1', 'test');
|
||||
$this->assertSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
$this->container->get('test'), $this->container->get('test'));
|
||||
$this->assertSame(
|
||||
$this->container->query('test1'), $this->container->query('test1'));
|
||||
$this->container->get('test1'), $this->container->get('test1'));
|
||||
$this->assertSame(
|
||||
$this->container->query('test'), $this->container->query('test1'));
|
||||
$this->container->get('test'), $this->container->get('test1'));
|
||||
}
|
||||
|
||||
public static function sanitizeNameProvider(): array {
|
||||
|
|
@ -206,14 +197,14 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
$this->container->registerService($register, function () {
|
||||
return 'abc';
|
||||
});
|
||||
$this->assertEquals('abc', $this->container->query($query));
|
||||
$this->assertEquals('abc', $this->container->get($query));
|
||||
}
|
||||
|
||||
|
||||
public function testConstructorComplexNoTestParameterFound(): void {
|
||||
$this->expectException(QueryException::class);
|
||||
$this->expectException(ContainerExceptionInterface::class);
|
||||
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
'Test\AppFramework\Utility\ClassComplexConstructor'
|
||||
);
|
||||
/* Use the object to trigger DI on PHP >= 8.4 */
|
||||
|
|
@ -225,7 +216,7 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
return new \StdClass();
|
||||
}, false);
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
$this->container->get('test'), $this->container->get('test'));
|
||||
}
|
||||
|
||||
public function testRegisterAliasFactory(): void {
|
||||
|
|
@ -234,17 +225,17 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
}, false);
|
||||
$this->container->registerAlias('test1', 'test');
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test'));
|
||||
$this->container->get('test'), $this->container->get('test'));
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test1'), $this->container->query('test1'));
|
||||
$this->container->get('test1'), $this->container->get('test1'));
|
||||
$this->assertNotSame(
|
||||
$this->container->query('test'), $this->container->query('test1'));
|
||||
$this->container->get('test'), $this->container->get('test1'));
|
||||
}
|
||||
|
||||
public function testQueryUntypedNullable(): void {
|
||||
$this->expectException(QueryException::class);
|
||||
$this->expectException(ContainerExceptionInterface::class);
|
||||
|
||||
$object = $this->container->query(
|
||||
$object = $this->container->get(
|
||||
ClassNullableUntypedConstructorArg::class
|
||||
);
|
||||
/* Use the object to trigger DI on PHP >= 8.4 */
|
||||
|
|
@ -253,7 +244,7 @@ class SimpleContainerTest extends \Test\TestCase {
|
|||
|
||||
public function testQueryTypedNullable(): void {
|
||||
/** @var ClassNullableTypedConstructorArg $service */
|
||||
$service = $this->container->query(ClassNullableTypedConstructorArg::class);
|
||||
$service = $this->container->get(ClassNullableTypedConstructorArg::class);
|
||||
|
||||
self::assertNull($service->class);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,17 +20,13 @@ use PHPUnit\Framework\MockObject\MockObject;
|
|||
use Test\TestCase;
|
||||
|
||||
class ManagerTest extends TestCase {
|
||||
/** @var Coordinator|MockObject */
|
||||
private $coordinator;
|
||||
private Coordinator&MockObject $coordinator;
|
||||
|
||||
/** @var IServerContainer|MockObject */
|
||||
private $server;
|
||||
private IServerContainer&MockObject $server;
|
||||
|
||||
/** @var ResourcesRoomsUpdater|MockObject */
|
||||
private $resourcesRoomsUpdater;
|
||||
private ResourcesRoomsUpdater&MockObject $resourcesRoomsUpdater;
|
||||
|
||||
/** @var Manager */
|
||||
private $manager;
|
||||
private Manager $manager;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
|
@ -52,10 +48,10 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_resource_backend1', true, $backend1,],
|
||||
['calendar_resource_backend2', true, $backend2,],
|
||||
['calendar_resource_backend1', $backend1,],
|
||||
['calendar_resource_backend2', $backend2,],
|
||||
]);
|
||||
|
||||
$this->manager->registerBackend('calendar_resource_backend1');
|
||||
|
|
@ -84,7 +80,7 @@ class ManagerTest extends TestCase {
|
|||
new ServiceRegistration('calendar_resource_foo', $backendClass)
|
||||
]);
|
||||
$this->server->expects(self::once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with($backendClass)
|
||||
->willReturn($backend);
|
||||
|
||||
|
|
@ -97,10 +93,10 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_resource_backend1', true, $backend1,],
|
||||
['calendar_resource_backend2', true, $backend2,],
|
||||
['calendar_resource_backend1', $backend1,],
|
||||
['calendar_resource_backend2', $backend2,],
|
||||
]);
|
||||
|
||||
$this->manager->registerBackend('calendar_resource_backend1');
|
||||
|
|
@ -116,10 +112,10 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_resource_backend1', true, $backend1,],
|
||||
['calendar_resource_backend2', true, $backend2,],
|
||||
['calendar_resource_backend1', $backend1,],
|
||||
['calendar_resource_backend2', $backend2,],
|
||||
]);
|
||||
|
||||
$this->manager->registerBackend('calendar_resource_backend1');
|
||||
|
|
|
|||
|
|
@ -52,10 +52,10 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_room_backend1', true, $backend1,],
|
||||
['calendar_room_backend2', true, $backend2,],
|
||||
['calendar_room_backend1', $backend1,],
|
||||
['calendar_room_backend2', $backend2,],
|
||||
]);
|
||||
|
||||
$this->manager->registerBackend('calendar_room_backend1');
|
||||
|
|
@ -86,7 +86,7 @@ class ManagerTest extends TestCase {
|
|||
new ServiceRegistration('calendar_room_foo', $backendClass)
|
||||
]);
|
||||
$this->server->expects(self::once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with($backendClass)
|
||||
->willReturn($backend);
|
||||
|
||||
|
|
@ -99,10 +99,10 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_room_backend1', true, $backend1,],
|
||||
['calendar_room_backend2', true, $backend2,],
|
||||
['calendar_room_backend1', $backend1,],
|
||||
['calendar_room_backend2', $backend2,],
|
||||
]);
|
||||
|
||||
$this->manager->registerBackend('calendar_room_backend1');
|
||||
|
|
@ -118,7 +118,7 @@ class ManagerTest extends TestCase {
|
|||
$backend2 = $this->createMock(IBackend::class);
|
||||
$backend2->method('getBackendIdentifier')->willReturn('backend_2');
|
||||
$this->server->expects(self::exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['calendar_room_backend1', true, $backend1,],
|
||||
['calendar_room_backend2', true, $backend2,],
|
||||
|
|
|
|||
|
|
@ -13,16 +13,14 @@ use OCA\Files\Collaboration\Resources\ResourceProvider;
|
|||
use OCP\AppFramework\QueryException;
|
||||
use OCP\Collaboration\Resources\IProviderManager;
|
||||
use OCP\IServerContainer;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Test\TestCase;
|
||||
|
||||
class ProviderManagerTest extends TestCase {
|
||||
/** @var IServerContainer */
|
||||
protected $serverContainer;
|
||||
/** @var LoggerInterface */
|
||||
protected $logger;
|
||||
/** @var IProviderManager */
|
||||
protected $providerManager;
|
||||
protected IServerContainer&MockObject $serverContainer;
|
||||
protected LoggerInterface&MockObject $logger;
|
||||
protected IProviderManager $providerManager;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
|
@ -48,7 +46,7 @@ class ProviderManagerTest extends TestCase {
|
|||
|
||||
public function testGetResourceProvidersValidProvider(): void {
|
||||
$this->serverContainer->expects($this->once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with($this->equalTo(ResourceProvider::class))
|
||||
->willReturn($this->createMock(ResourceProvider::class));
|
||||
|
||||
|
|
@ -61,7 +59,7 @@ class ProviderManagerTest extends TestCase {
|
|||
|
||||
public function testGetResourceProvidersInvalidProvider(): void {
|
||||
$this->serverContainer->expects($this->once())
|
||||
->method('query')
|
||||
->method('get')
|
||||
->with($this->equalTo('InvalidResourceProvider'))
|
||||
->willThrowException(new QueryException('A meaningful error message'));
|
||||
|
||||
|
|
@ -76,7 +74,7 @@ class ProviderManagerTest extends TestCase {
|
|||
|
||||
public function testGetResourceProvidersValidAndInvalidProvider(): void {
|
||||
$this->serverContainer->expects($this->exactly(2))
|
||||
->method('query')
|
||||
->method('get')
|
||||
->willReturnCallback(function (string $service) {
|
||||
if ($service === 'InvalidResourceProvider') {
|
||||
throw new QueryException('A meaningful error message');
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use OC\App\AppStore\Fetcher\AppFetcher;
|
|||
use OC\Config;
|
||||
use OC\Server;
|
||||
use OCP\Comments\ICommentsManager;
|
||||
use OCP\IConfig;
|
||||
|
||||
/**
|
||||
* Class Server
|
||||
|
|
@ -43,14 +44,9 @@ class ServerTest extends \Test\TestCase {
|
|||
];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $serviceName
|
||||
* @param string $instanceOf
|
||||
*/
|
||||
#[\PHPUnit\Framework\Attributes\DataProvider('dataTestQuery')]
|
||||
public function testQuery($serviceName, $instanceOf): void {
|
||||
$this->assertInstanceOf($instanceOf, $this->server->query($serviceName), 'Service "' . $serviceName . '"" did not return the right class');
|
||||
public function testQuery(string $serviceName, string $instanceOf): void {
|
||||
$this->assertInstanceOf($instanceOf, $this->server->get($serviceName), 'Service "' . $serviceName . '"" did not return the right class');
|
||||
}
|
||||
|
||||
public function testGetCertificateManager(): void {
|
||||
|
|
@ -59,7 +55,7 @@ class ServerTest extends \Test\TestCase {
|
|||
}
|
||||
|
||||
public function testOverwriteDefaultCommentsManager(): void {
|
||||
$config = $this->server->getConfig();
|
||||
$config = $this->server->get(IConfig::class);
|
||||
$defaultManagerFactory = $config->getSystemValue('comments.managerFactory', '\OC\Comments\ManagerFactory');
|
||||
|
||||
$config->setSystemValue('comments.managerFactory', '\Test\Comments\FakeFactory');
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ class RegistryTest extends TestCase {
|
|||
}
|
||||
|
||||
public function testSubscriptionService(): void {
|
||||
$this->serverContainer->method('query')
|
||||
$this->serverContainer->method('get')
|
||||
->with(DummySubscription::class)
|
||||
->willReturn(new DummySubscription(true, false, false));
|
||||
$this->registry->registerService(DummySubscription::class);
|
||||
|
|
|
|||
|
|
@ -75,11 +75,11 @@ trait EncryptionTrait {
|
|||
|
||||
$container = $this->encryptionApp->getContainer();
|
||||
/** @var KeyManager $keyManager */
|
||||
$keyManager = $container->query(KeyManager::class);
|
||||
$keyManager = $container->get(KeyManager::class);
|
||||
/** @var Setup $userSetup */
|
||||
$userSetup = $container->query(Setup::class);
|
||||
$userSetup = $container->get(Setup::class);
|
||||
$userSetup->setupUser($name, $password);
|
||||
$encryptionManager = $container->query(IManager::class);
|
||||
$encryptionManager = $container->get(IManager::class);
|
||||
$this->encryptionApp->setUp($encryptionManager);
|
||||
$keyManager->init($name, $password);
|
||||
$this->invokePrivate($keyManager, 'keyUid', [$name]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue