From 1f197134c87836167142cc766bdaab572fb73b8d Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@owncloud.com>
Date: Fri, 18 Dec 2015 11:44:10 +0100
Subject: [PATCH] Look up services in the app container before trying the core
 container

---
 lib/private/servercontainer.php | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/lib/private/servercontainer.php b/lib/private/servercontainer.php
index 469fd6475e2..856e3f9b495 100644
--- a/lib/private/servercontainer.php
+++ b/lib/private/servercontainer.php
@@ -62,4 +62,28 @@ class ServerContainer extends SimpleContainer {
 
 		return new DIContainer($appName);
 	}
+
+	/**
+	 * @param string $name name of the service to query for
+	 * @return mixed registered service for the given $name
+	 * @throws QueryException if the query could not be resolved
+	 */
+	public function query($name) {
+		$name = $this->sanitizeName($name);
+
+		// In case the service starts with OCA\ we try to find the service in
+		// the apps container first.
+		if (strpos($name, 'OCA\\') === 0 && substr_count($name, '\\') >= 2) {
+			$segments = explode('\\', $name);
+			$appContainer = $this->getAppContainer(strtolower($segments[0]));
+			try {
+				return $appContainer->query($name);
+			} catch (QueryException $e) {
+				// Didn't find the service in the respective app container,
+				// ignore it and fall back to the core container.
+			}
+		}
+
+		return parent::query($name);
+	}
 }
-- 
GitLab