For more type safety Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>tags/v22.0.0beta1
@@ -35,6 +35,7 @@ use OC\Support\CrashReport\Registry; | |||
use OCP\AppFramework\App; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\AppFramework\Middleware; | |||
use OCP\AppFramework\Services\InitialStateProvider; | |||
use OCP\Authentication\IAlternativeLogin; | |||
use OCP\Capabilities\ICapability; | |||
use OCP\Dashboard\IManager; | |||
@@ -80,7 +81,7 @@ class RegistrationContext { | |||
/** @var ServiceRegistration<IAlternativeLogin>[] */ | |||
private $alternativeLogins = []; | |||
/** @var array[] */ | |||
/** @var ServiceRegistration<InitialStateProvider>[] */ | |||
private $initialStates = []; | |||
/** @var ServiceRegistration<IHandler>[] */ | |||
@@ -261,10 +262,7 @@ class RegistrationContext { | |||
} | |||
public function registerInitialState(string $appId, string $class): void { | |||
$this->initialStates[] = [ | |||
'appId' => $appId, | |||
'class' => $class, | |||
]; | |||
$this->initialStates[] = new ServiceRegistration($appId, $class); | |||
} | |||
public function registerWellKnown(string $appId, string $class): void { | |||
@@ -440,7 +438,7 @@ class RegistrationContext { | |||
} | |||
/** | |||
* @return array[] | |||
* @return ServiceRegistration<InitialStateProvider>[] | |||
*/ | |||
public function getInitialStates(): array { | |||
return $this->initialStates; |
@@ -115,25 +115,25 @@ class InitialStateService implements IInitialStateService { | |||
$initialStates = $context->getInitialStates(); | |||
foreach ($initialStates as $initialState) { | |||
try { | |||
$provider = $this->container->query($initialState['class']); | |||
$provider = $this->container->query($initialState->getService()); | |||
} catch (QueryException $e) { | |||
// Log an continue. We can be fault tolerant here. | |||
$this->logger->logException($e, [ | |||
'message' => 'Could not load initial state provider dynamically: ' . $e->getMessage(), | |||
'level' => ILogger::ERROR, | |||
'app' => $initialState['appId'], | |||
'app' => $initialState->getAppId(), | |||
]); | |||
continue; | |||
} | |||
if (!($provider instanceof InitialStateProvider)) { | |||
// Log an continue. We can be fault tolerant here. | |||
$this->logger->error('Initial state provider is not an InitialStateProvider instance: ' . $initialState['class'], [ | |||
'app' => $initialState['appId'], | |||
$this->logger->error('Initial state provider is not an InitialStateProvider instance: ' . $initialState->getService(), [ | |||
'app' => $initialState->getAppId(), | |||
]); | |||
} | |||
$this->provideInitialState($initialState['appId'], $provider->getKey(), $provider); | |||
$this->provideInitialState($initialState->getAppId(), $provider->getKey(), $provider); | |||
} | |||
} | |||