diff options
-rw-r--r-- | lib/private/Share20/ProviderFactory.php | 39 |
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; } |