Skip to content
Snippets Groups Projects
Unverified Commit aad535e3 authored by Joas Schilling's avatar Joas Schilling
Browse files

Log an error in development cases when the application class was set up incorrectly

parent f7319e13
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,7 @@ declare(strict_types=1); ...@@ -34,6 +34,7 @@ declare(strict_types=1);
namespace OCP\AppFramework; namespace OCP\AppFramework;
use OC\AppFramework\Routing\RouteConfig; use OC\AppFramework\Routing\RouteConfig;
use OC\ServerContainer;
use OCP\Route\IRouter; use OCP\Route\IRouter;
...@@ -51,8 +52,8 @@ class App { ...@@ -51,8 +52,8 @@ class App {
private $container; private $container;
/** /**
* Turns an app id into a namespace by convetion. The id is split at the * Turns an app id into a namespace by convention. The id is split at the
* underscores, all parts are camelcased and reassembled. e.g.: * underscores, all parts are CamelCased and reassembled. e.g.:
* some_app_id -> OCA\SomeAppId * some_app_id -> OCA\SomeAppId
* @param string $appId the app id * @param string $appId the app id
* @param string $topNamespace the namespace which should be prepended to * @param string $topNamespace the namespace which should be prepended to
...@@ -71,6 +72,28 @@ class App { ...@@ -71,6 +72,28 @@ class App {
* @since 6.0.0 * @since 6.0.0
*/ */
public function __construct(string $appName, array $urlParams = []) { 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 { try {
$this->container = \OC::$server->getRegisteredAppContainer($appName); $this->container = \OC::$server->getRegisteredAppContainer($appName);
} catch (QueryException $e) { } catch (QueryException $e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment