diff --git a/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthCallbackHandler.kt b/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthCallbackHandler.kt index a1e48389f7bacc..7427fe5926a932 100644 --- a/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthCallbackHandler.kt +++ b/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthCallbackHandler.kt @@ -16,7 +16,7 @@ import org.jetbrains.io.response import java.nio.charset.StandardCharsets internal class GitpodAuthCallbackHandler : RestService() { - private val service = GitpodAuthService.instance + private val service = GitpodAuthService.instance.get() override fun getServiceName(): String = service.name diff --git a/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthService.kt b/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthService.kt index eae72c36c46f42..885073c23386a4 100644 --- a/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthService.kt +++ b/components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/auth/GitpodAuthService.kt @@ -17,8 +17,10 @@ import com.intellij.credentialStore.CredentialAttributes import com.intellij.credentialStore.generateServiceName import com.intellij.ide.passwordSafe.PasswordSafe import com.intellij.openapi.Disposable +import com.intellij.openapi.application.CachedSingletonsRegistry import com.intellij.openapi.components.Service import com.intellij.openapi.components.service +import com.intellij.openapi.diagnostic.thisLogger import com.intellij.util.EventDispatcher import com.intellij.util.Url import com.intellij.util.Urls.encodeParameters @@ -35,6 +37,7 @@ import java.net.http.HttpResponse import java.security.SecureRandom import java.util.* import java.util.concurrent.CompletableFuture +import java.util.function.Supplier import kotlin.math.absoluteValue @Service @@ -148,7 +151,8 @@ internal class GitpodAuthService : OAuthServiceBase() { } companion object { - val instance: GitpodAuthService = service() + @Suppress("UnstableApiUsage") + val instance: Supplier = CachedSingletonsRegistry.lazy { service() } private const val SERVICE_NAME = "gitpod/oauth" private const val CLIENT_ID = "jetbrains-gateway-gitpod-plugin" @@ -176,7 +180,7 @@ internal class GitpodAuthService : OAuthServiceBase() { } suspend fun authorize(gitpodHost: String): String { - val accessToken = instance.authorize(gitpodHost).await().accessToken + val accessToken = instance.get().authorize(gitpodHost).await().accessToken setAccessToken(gitpodHost, accessToken) return accessToken }