Skip to content

Commit d011d1f

Browse files
authored
Merge pull request #1004 from JetBrains/rival/improve-startup
Improve startup
2 parents 70424c2 + 68463b2 commit d011d1f

File tree

2 files changed

+33
-31
lines changed

2 files changed

+33
-31
lines changed
Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
/*
2-
* Copyright 2018-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the MIT license.
2+
* Copyright 2018-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the MIT license.
33
*/
44

55
package com.microsoft.azure.toolkit.intellij.base
66

7-
import com.intellij.ide.AppLifecycleListener
87
import com.intellij.openapi.diagnostic.logger
9-
import com.intellij.util.net.HttpConfigurable
8+
import com.intellij.openapi.project.Project
9+
import com.intellij.openapi.startup.ProjectActivity
10+
import com.intellij.util.net.ProxyAuthentication
11+
import com.intellij.util.net.ProxyConfiguration.StaticProxyConfiguration
12+
import com.intellij.util.net.ProxySettings
1013
import com.intellij.util.net.ssl.CertificateManager
1114
import com.microsoft.azure.toolkit.ide.common.auth.IdeAzureAccount
1215
import com.microsoft.azure.toolkit.ide.common.store.AzureConfigInitializer.initialize
@@ -15,43 +18,40 @@ import com.microsoft.azure.toolkit.ide.common.store.DefaultMachineStore
1518
import com.microsoft.azure.toolkit.intellij.common.CommonConst
1619
import com.microsoft.azure.toolkit.intellij.common.auth.IntelliJSecureStore
1720
import com.microsoft.azure.toolkit.intellij.common.settings.IntellijStore
18-
import com.microsoft.azure.toolkit.intellij.common.telemetry.IntelliJAzureTelemetryCommonPropertiesProvider
1921
import com.microsoft.azure.toolkit.lib.Azure
2022
import com.microsoft.azure.toolkit.lib.auth.AzureCloud
2123
import com.microsoft.azure.toolkit.lib.common.proxy.ProxyInfo
2224
import com.microsoft.azure.toolkit.lib.common.proxy.ProxyManager
2325
import com.microsoft.azure.toolkit.lib.common.task.AzureRxTaskManager
24-
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager
25-
import java.io.File
26+
import java.util.UUID
2627
import javax.net.ssl.HttpsURLConnection
28+
import kotlin.io.path.Path
29+
import kotlin.io.path.absolutePathString
2730

28-
class PluginLifecycleListener : AppLifecycleListener {
31+
class PluginLifecycleActivity : ProjectActivity {
2932
companion object {
30-
private val LOG = logger<PluginLifecycleListener>()
33+
private val LOG = logger<PluginLifecycleActivity>()
3134
}
3235

33-
override fun appFrameCreated(commandLineArgs: MutableList<String>) {
36+
override suspend fun execute(project: Project) {
3437
try {
3538
AzureRxTaskManager.register()
36-
val azureJson = String.format("%s%s%s", CommonConst.PLUGIN_PATH, File.separator, "azure.json")
39+
val azureJson = Path(CommonConst.PLUGIN_PATH).resolve("azure.json").absolutePathString()
3740
AzureStoreManager.register(
3841
DefaultMachineStore(azureJson),
3942
IntellijStore.getInstance(),
4043
IntelliJSecureStore.getInstance()
4144
)
4245
initProxy()
4346
initializeConfig()
44-
AzureTaskManager.getInstance().runLater {
45-
IdeAzureAccount.getInstance().restoreSignin()
46-
}
47+
IdeAzureAccount.getInstance().restoreSignin()
4748
} catch (t: Throwable) {
4849
LOG.error(t)
4950
}
5051
}
5152

5253
private fun initializeConfig() {
53-
val installId = IntelliJAzureTelemetryCommonPropertiesProvider.getInstallationId()
54-
54+
val installId = UUID.randomUUID().toString()
5555
initialize(installId, "Azure Toolkit for IntelliJ", CommonConst.PLUGIN_VERSION)
5656
val cloud = Azure.az().config().cloud
5757
if (cloud.isNotBlank()) {
@@ -60,18 +60,23 @@ class PluginLifecycleListener : AppLifecycleListener {
6060
}
6161

6262
private fun initProxy() {
63-
val instance = HttpConfigurable.getInstance()
64-
if (instance != null && instance.USE_HTTP_PROXY) {
65-
val proxy = ProxyInfo.builder()
66-
.source("intellij")
67-
.host(instance.PROXY_HOST)
68-
.port(instance.PROXY_PORT)
69-
.username(instance.proxyLogin)
70-
.password(instance.plainProxyPassword)
71-
.build()
72-
Azure.az().config().setProxyInfo(proxy)
73-
ProxyManager.getInstance().applyProxy()
63+
val proxySettings = ProxySettings.getInstance().getProxyConfiguration()
64+
if (proxySettings is StaticProxyConfiguration) {
65+
val proxyAuthentication = ProxyAuthentication.getInstance()
66+
val credentials = proxyAuthentication.getKnownAuthentication(proxySettings.host, proxySettings.port)
67+
if (credentials != null) {
68+
val proxy = ProxyInfo.builder()
69+
.source("intellij")
70+
.host(proxySettings.host)
71+
.port(proxySettings.port)
72+
.username(credentials.userName)
73+
.password(credentials.password?.toString() ?: "")
74+
.build()
75+
Azure.az().config().setProxyInfo(proxy)
76+
ProxyManager.getInstance().applyProxy()
77+
}
7478
}
79+
7580
val certificateManager = CertificateManager.getInstance()
7681
Azure.az().config().sslContext = certificateManager.sslContext
7782
HttpsURLConnection.setDefaultSSLSocketFactory(certificateManager.sslContext.socketFactory)

PluginsAndFeatures/azure-toolkit-for-rider/src/main/resources/META-INF/plugin.xml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
<depends>com.intellij.modules.rider</depends>
4747

4848
<extensions defaultExtensionNs="com.intellij">
49+
<postStartupActivity implementation="com.microsoft.azure.toolkit.intellij.base.PluginLifecycleActivity"/>
50+
4951
<applicationConfigurable parentId="tools"
5052
displayName="Azure"
5153
id="com.microsoft.intellij.AzureConfigurable"
@@ -76,11 +78,6 @@
7678
<actions implementation="com.microsoft.azure.toolkit.intellij.settings.IntellijCommonActionsContributor"/>
7779
</extensions>
7880

79-
<applicationListeners>
80-
<listener class="com.microsoft.azure.toolkit.intellij.base.PluginLifecycleListener"
81-
topic="com.intellij.ide.AppLifecycleListener"/>
82-
</applicationListeners>
83-
8481
<actions>
8582
<group id="AzurePopupGroup"
8683
text="Azure"

0 commit comments

Comments
 (0)