summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Share20/ProviderFactory.php39
1 files changed, 32 insertions, 7 deletions
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 434c0017d21..9bba4d771aa 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -40,6 +40,7 @@ use OCA\FederatedFileSharing\Notifications;
use OCA\FederatedFileSharing\TokenHandler;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
+use OCA\Talk\Share\RoomShareProvider;
use OCP\Defaults;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IServerContainer;
@@ -47,6 +48,7 @@ use OCP\Share\IManager;
use OCP\Share\IProviderFactory;
use OCP\Share\IShare;
use OCP\Share\IShareProvider;
+use Psr\Log\LoggerInterface;
/**
* Class ProviderFactory
@@ -257,8 +259,15 @@ class ProviderFactory implements IProviderFactory {
}
try {
- $this->roomShareProvider = $this->serverContainer->query('\OCA\Talk\Share\RoomShareProvider');
- } catch (\OCP\AppFramework\QueryException $e) {
+ /**
+ * @psalm-suppress UndefinedClass
+ */
+ $this->roomShareProvider = $this->serverContainer->get(RoomShareProvider::class);
+ } catch (\Throwable $e) {
+ $this->serverContainer->get(LoggerInterface::class)->error(
+ $e->getMessage(),
+ ['exception' => $e]
+ );
return null;
}
}
@@ -288,9 +297,16 @@ class ProviderFactory implements IProviderFactory {
}
foreach ($this->registeredShareProviders as $shareProvider) {
- /** @var IShareProvider $instance */
- $instance = $this->serverContainer->get($shareProvider);
- $this->shareProviders[$instance->identifier()] = $instance;
+ try {
+ /** @var IShareProvider $instance */
+ $instance = $this->serverContainer->get($shareProvider);
+ $this->shareProviders[$instance->identifier()] = $instance;
+ } catch (\Throwable $e) {
+ $this->serverContainer->get(LoggerInterface::class)->error(
+ $e->getMessage(),
+ ['exception' => $e]
+ );
+ }
}
if (isset($this->shareProviders[$id])) {
@@ -351,8 +367,17 @@ class ProviderFactory implements IProviderFactory {
}
foreach ($this->registeredShareProviders as $shareProvider) {
- /** @var IShareProvider $instance */
- $instance = $this->serverContainer->get($shareProvider);
+ try {
+ /** @var IShareProvider $instance */
+ $instance = $this->serverContainer->get($shareProvider);
+ } catch (\Throwable $e) {
+ $this->serverContainer->get(LoggerInterface::class)->error(
+ $e->getMessage(),
+ ['exception' => $e]
+ );
+ continue;
+ }
+
if (!isset($this->shareProviders[$instance->identifier()])) {
$this->shareProviders[$instance->identifier()] = $instance;
}