From aad535e3afe6fb84313cbc8160f93177b92e46a0 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 16 Oct 2019 12:16:49 +0200 Subject: [PATCH] Log an error in development cases when the application class was set up incorrectly Signed-off-by: Joas Schilling --- lib/public/AppFramework/App.php | 27 +++++++++++++++++++++++++-- 1 file 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) { -- 2.39.5