diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-10-29 23:09:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-29 23:09:26 +0300 |
commit | 380563fd53a2f03d772614388a9f345579ba7ca3 (patch) | |
tree | d80fc5e9f7ccc30ffecc5e4f39f9e7a8ec566a25 /lib/public | |
parent | 7c7f0dbf95b34e16bab4b23bd011111be11bbc21 (diff) | |
parent | aad535e3afe6fb84313cbc8160f93177b92e46a0 (diff) |
Merge pull request #17562 from nextcloud/techdebt/17509/log-error-when-setting-up-application-incorrectly
Log an error in development cases when the application class was set …
Diffstat (limited to 'lib/public')
-rw-r--r-- | lib/public/AppFramework/App.php | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php index 06524e4bf02..3b42b28758d 100644 --- a/lib/public/AppFramework/App.php +++ b/lib/public/AppFramework/App.php @@ -34,6 +34,7 @@ declare(strict_types=1); namespace OCP\AppFramework; use OC\AppFramework\Routing\RouteConfig; +use OC\ServerContainer; use OCP\Route\IRouter; @@ -51,8 +52,8 @@ class App { private $container; /** - * Turns an app id into a namespace by convetion. The id is split at the - * underscores, all parts are camelcased and reassembled. e.g.: + * Turns an app id into a namespace by convention. The id is split at the + * underscores, all parts are CamelCased and reassembled. e.g.: * some_app_id -> OCA\SomeAppId * @param string $appId the app id * @param string $topNamespace the namespace which should be prepended to @@ -71,6 +72,28 @@ class App { * @since 6.0.0 */ public function __construct(string $appName, array $urlParams = []) { + if (\OC::$server->getConfig()->getSystemValueBool('debug')) { + $applicationClassName = get_class($this); + $e = new \RuntimeException('App class ' . $applicationClassName . ' is not setup via query() but directly'); + $setUpViaQuery = false; + + foreach ($e->getTrace() as $step) { + if (isset($step['class'], $step['function'], $step['args'][0]) && + $step['class'] === ServerContainer::class && + $step['function'] === 'query' && + $step['args'][0] === $applicationClassName) { + $setUpViaQuery = true; + break; + } + } + + if (!$setUpViaQuery) { + \OC::$server->getLogger()->logException($e, [ + 'app' => $appName, + ]); + } + } + try { $this->container = \OC::$server->getRegisteredAppContainer($appName); } catch (QueryException $e) { |