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

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2019-10-16 12:16:49 +02:00
parent f7319e139d
commit aad535e3af
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
1 changed files with 25 additions and 2 deletions

View File

@ -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) {