Don't do a recursive search

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2017-03-22 10:33:30 +01:00
parent 9208f6379c
commit 5695a4ec92
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
4 changed files with 24 additions and 3 deletions

View File

@ -49,6 +49,7 @@ use OC\ServerContainer;
use OCP\AppFramework\Http\IOutput;
use OCP\AppFramework\IApi;
use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\QueryException;
use OCP\Files\Folder;
use OCP\Files\IAppData;
use OCP\IL10N;
@ -373,7 +374,25 @@ class DIContainer extends SimpleContainer implements IAppContainer {
});
}
/**
* @param string $name
* @return mixed
* @throws QueryException if the query could not be resolved
*/
public function query($name) {
try {
return $this->queryNoFallback($name);
} catch (QueryException $e) {
return $this->getServer()->query($name);
}
}
/**
* @param string $name
* @return mixed
* @throws QueryException if the query could not be resolved
*/
public function queryNoFallback($name) {
$name = $this->sanitizeName($name);
if ($this->offsetExists($name)) {
@ -388,6 +407,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
}
}
return $this->getServer()->query($name);
throw new QueryException('Could not resolve ' . $name . '!' .
' Class can not be instantiated');
}
}

View File

@ -79,7 +79,7 @@ class ServerContainer extends SimpleContainer {
$segments = explode('\\', $name);
$appContainer = $this->getAppContainer(strtolower($segments[1]));
try {
return $appContainer->query($name);
return $appContainer->queryNoFallback($name);
} catch (QueryException $e) {
// Didn't find the service in the respective app container,
// ignore it and fall back to the core container.

View File

@ -62,6 +62,7 @@ interface IContainer {
*
* @param string $name
* @return mixed
* @throws QueryException if the query could not be resolved
* @since 6.0.0
*/
public function query($name);

View File

@ -68,7 +68,7 @@ class ManagerTest extends TestCase {
parent::setUp();
$this->user = $this->createMock(IUser::class);
$this->appManager = $this->createMock('\OC\App\AppManager');
$this->appManager = $this->createMock(AppManager::class);
$this->session = $this->createMock(ISession::class);
$this->config = $this->createMock(IConfig::class);
$this->activityManager = $this->createMock(IManager::class);