$this->
updateMetadata($metadata,
$context);
$app =
$this->
loadApp($id,
$context);
$this->
updateCustomEntities($app->
getId(),
$app->
getPath(),
$manifest);
$this->permissionPersister->
updatePrivileges($manifest->
getPermissions(),
$roleId);
// If the app has no secret yet, but now specifies setup data we do a registration to get an app secret
// this mostly happens during install, but may happen in the update case if the app previously worked without an external server
if (!
$app->
getAppSecret() &&
$manifest->
getSetup()) { try { $this->registrationService->
registerApp($manifest,
$id,
$secretAccessKey,
$context);
} catch (AppRegistrationException
$e) { $this->
removeAppAndRole($app,
$context);
throw $e;
} } // Refetch app to get secret after registration
$app =
$this->
loadApp($id,
$context);