Skip to content

Commit 036148c

Browse files
committed
Fix deprecated apis in modern jetbrains ides
1 parent ffce192 commit 036148c

11 files changed

Lines changed: 135 additions & 54 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,4 @@ deps/vsix/plugin/*
5858
# Roo build artifacts
5959
.zoo-build/
6060
dist-with-roo/
61+
plans/

jetbrains_plugin/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Plugin basic information
22
pluginGroup=org.zoocode.jetbrains
3-
pluginVersion=3.68.0
3+
pluginVersion=3.70.0
44

55
# Platform basic information
66
platformVersion=2023.3

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/actors/MainThreadDocumentsShape.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.google.common.collect.Maps
88
import com.intellij.openapi.diagnostic.Logger
99
import com.intellij.openapi.project.Project
1010
import com.intellij.openapi.vfs.LocalFileSystem
11-
import com.intellij.testFramework.utils.vfs.createFile
1211
import org.zoocode.jetbrains.editor.EditorAndDocManager
1312
import org.zoocode.jetbrains.editor.createURI
1413
import org.zoocode.jetbrains.service.DocumentSyncService
@@ -104,7 +103,9 @@ class MainThreadDocuments(var project: Project) : MainThreadDocumentsShape {
104103
if (!file.exists()) {
105104
file.parentFile.mkdirs()
106105
val vf = vfs.findFileByIoFile(file.parentFile)
107-
vf?.createFile(file.name)
106+
ApplicationManager.getApplication().runWriteAction {
107+
vf?.createChildData(this, file.name)
108+
}
108109
}
109110

110111
project.getService(EditorAndDocManager::class.java).openDocument(uri)
@@ -144,4 +145,4 @@ class MainThreadDocuments(var project: Project) : MainThreadDocumentsShape {
144145
}
145146
}
146147

147-
}
148+
}

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/core/ExtensionHostManager.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import org.zoocode.jetbrains.ipc.NodeSocket
1515
import org.zoocode.jetbrains.ipc.PersistentProtocol
1616
import org.zoocode.jetbrains.ipc.proxy.ResponsiveState
1717
import org.zoocode.jetbrains.util.PluginConstants
18+
import org.zoocode.jetbrains.util.PluginInfo
1819
import org.zoocode.jetbrains.util.PluginResourceUtil
1920
import org.zoocode.jetbrains.util.URI
2021
import org.zoocode.jetbrains.workspace.WorkspaceFileChangeManager
@@ -25,8 +26,6 @@ import kotlinx.coroutines.cancel
2526
import java.net.Socket
2627
import java.nio.channels.SocketChannel
2728
import java.nio.file.Paths
28-
import com.intellij.ide.plugins.PluginManagerCore
29-
import com.intellij.openapi.extensions.PluginId
3029
import org.zoocode.jetbrains.extensions.core.ExtensionManager as GlobalExtensionManager
3130
import org.zoocode.jetbrains.extensions.config.ExtensionProvider
3231
import org.zoocode.jetbrains.extensions.config.ExtensionMetadata
@@ -358,8 +357,8 @@ class ExtensionHostManager : Disposable {
358357
val version = applicationInfo.shortVersion ?: "1.0.0"
359358
LOG.info("Get IDE version: $version")
360359

361-
val pluginVersion = PluginManagerCore.getPlugin(PluginId.getId(PluginConstants.PLUGIN_ID))?.version
362-
if (pluginVersion != null) {
360+
val pluginVersion = PluginInfo.version
361+
if (pluginVersion != "unknown") {
363362
val fullVersion = "$version, $pluginVersion"
364363
LOG.info("Get IDE version and plugin version: $fullVersion")
365364
return fullVersion
@@ -442,4 +441,4 @@ class ExtensionHostManager : Disposable {
442441

443442
LOG.info("ExtensionHostManager disposed")
444443
}
445-
}
444+
}

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/editor/EditorHolder.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
1414
import com.intellij.openapi.fileEditor.FileEditor
1515
import com.intellij.openapi.fileEditor.TextEditor
1616
import com.intellij.openapi.vfs.LocalFileSystem
17-
import com.intellij.testFramework.utils.editor.saveToDisk
1817
import kotlinx.coroutines.*
1918
import java.io.File
2019
import java.lang.ref.WeakReference
@@ -213,9 +212,7 @@ class EditorHolder(
213212

214213
suspend fun save(): Boolean {
215214
ApplicationManager.getApplication().invokeLater {
216-
ApplicationManager.getApplication().runWriteAction {
217-
editorDocument?.saveToDisk()
218-
}
215+
editorDocument?.let { FileDocumentManager.getInstance().saveDocument(it) }
219216
}
220217
val newDoc = ModelAddedData(
221218
uri = document.uri,
@@ -304,4 +301,4 @@ class EditorHolder(
304301
stateManager.updateDocument(document)
305302
}
306303
}
307-
}
304+
}

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/extensions/ui/actions/ExtensionStatusChecker.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ import org.zoocode.jetbrains.core.PluginContext
1919
import org.zoocode.jetbrains.core.ServiceProxyRegistry
2020
import org.zoocode.jetbrains.util.ProxyConfigUtil
2121
import org.zoocode.jetbrains.webview.WebViewManager
22-
import com.intellij.ide.plugins.PluginManagerCore
23-
import com.intellij.openapi.extensions.PluginId
2422
import com.intellij.ui.jcef.JBCefApp
2523
import com.intellij.openapi.application.ApplicationInfo
26-
import org.zoocode.jetbrains.util.PluginConstants
24+
import org.zoocode.jetbrains.util.PluginInfo
2725

2826
/**
2927
* Action to check extension status and diagnose issues
@@ -156,8 +154,7 @@ class ExtensionStatusChecker : AnAction("Check Extension Status") {
156154
private fun addSystemInformation(sb: StringBuilder) {
157155
try {
158156
val appInfo = ApplicationInfo.getInstance()
159-
val plugin = PluginManagerCore.getPlugin(PluginId.getId(PluginConstants.PLUGIN_ID))
160-
val pluginVersion = plugin?.version ?: "unknown"
157+
val pluginVersion = PluginInfo.version
161158
val osName = System.getProperty("os.name")
162159
val osVersion = System.getProperty("os.version")
163160
val osArch = System.getProperty("os.arch")

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/plugin/WecoderPlugin.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import java.util.concurrent.CompletableFuture
2222
import kotlinx.coroutines.*
2323
import java.util.Properties
2424
import java.io.InputStream
25-
import com.intellij.ide.plugins.PluginManagerCore
26-
import com.intellij.openapi.extensions.PluginId
2725
import com.intellij.openapi.util.SystemInfo
2826
import com.intellij.ui.jcef.JBCefApp
2927
import com.intellij.openapi.application.ApplicationInfo
@@ -32,6 +30,7 @@ import org.zoocode.jetbrains.extensions.core.ExtensionConfigurationManager
3230
import org.zoocode.jetbrains.extensions.core.ExtensionManager
3331
import org.zoocode.jetbrains.util.ExtensionUtils
3432
import org.zoocode.jetbrains.util.PluginConstants
33+
import org.zoocode.jetbrains.util.PluginInfo
3534
import org.zoocode.jetbrains.util.PluginResourceUtil
3635
import java.io.File
3736

@@ -62,8 +61,7 @@ class WecoderPlugin : StartupActivity.DumbAware {
6261

6362
override fun runActivity(project: Project) {
6463
val appInfo = ApplicationInfo.getInstance()
65-
val plugin = PluginManagerCore.getPlugin(PluginId.getId(PluginConstants.PLUGIN_ID))
66-
val pluginVersion = plugin?.version ?: "unknown"
64+
val pluginVersion = PluginInfo.version
6765
val osName = System.getProperty("os.name")
6866
val osVersion = System.getProperty("os.version")
6967
val osArch = System.getProperty("os.arch")
@@ -537,4 +535,4 @@ class WecoderPluginService(private var currentProject: Project) : Disposable {
537535

538536
LOG.info("WecoderPluginService disposed")
539537
}
540-
}
538+
}

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/ui/ZooCodeJetBrainsToolWindowFactory.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import com.intellij.openapi.project.Project
1212
import com.intellij.openapi.wm.ToolWindow
1313
import com.intellij.openapi.wm.ToolWindowFactory
1414
import com.intellij.ui.content.ContentFactory
15-
import com.intellij.ide.plugins.PluginManagerCore
16-
import com.intellij.openapi.extensions.PluginId
1715
import com.intellij.ui.jcef.JBCefApp
1816
import com.intellij.openapi.application.ApplicationInfo
1917
import com.intellij.ide.BrowserUtil
@@ -26,6 +24,7 @@ import org.zoocode.jetbrains.webview.WebViewCreationCallback
2624
import org.zoocode.jetbrains.webview.WebViewInstance
2725
import org.zoocode.jetbrains.webview.WebViewManager
2826
import org.zoocode.jetbrains.util.PluginConstants
27+
import org.zoocode.jetbrains.util.PluginInfo as PluginRuntimeInfo
2928
import org.zoocode.jetbrains.extensions.core.ExtensionConfigurationManager
3029
import org.zoocode.jetbrains.extensions.core.ExtensionManager
3130
import org.zoocode.jetbrains.plugin.SystemObjectProvider
@@ -136,8 +135,7 @@ class ZooCodeJetBrainsToolWindowFactory : ToolWindowFactory {
136135
*/
137136
private fun createSystemInfoText(): String {
138137
val appInfo = ApplicationInfo.getInstance()
139-
val plugin = PluginManagerCore.getPlugin(PluginId.getId(PluginConstants.PLUGIN_ID))
140-
val pluginVersion = plugin?.version ?: "unknown"
138+
val pluginVersion = PluginRuntimeInfo.version
141139
val osName = System.getProperty("os.name")
142140
val osVersion = System.getProperty("os.version")
143141
val osArch = System.getProperty("os.arch")
@@ -208,8 +206,7 @@ class ZooCodeJetBrainsToolWindowFactory : ToolWindowFactory {
208206
*/
209207
private fun createSystemInfoPlainText(): String {
210208
val appInfo = ApplicationInfo.getInstance()
211-
val plugin = PluginManagerCore.getPlugin(PluginId.getId(PluginConstants.PLUGIN_ID))
212-
val pluginVersion = plugin?.version ?: "unknown"
209+
val pluginVersion = PluginRuntimeInfo.version
213210
val osName = System.getProperty("os.name")
214211
val osVersion = System.getProperty("os.version")
215212
val osArch = System.getProperty("os.arch")
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// SPDX-FileCopyrightText: 2025 Weibo, Inc.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.zoocode.jetbrains.util
6+
7+
import com.intellij.ide.plugins.cl.PluginAwareClassLoader
8+
import java.nio.file.Path
9+
10+
/** Information about this plugin obtained from its own class loader. */
11+
object PluginInfo {
12+
private val descriptor
13+
get() = (PluginInfo::class.java.classLoader as? PluginAwareClassLoader)?.pluginDescriptor
14+
15+
val version: String
16+
get() = descriptor?.version ?: "unknown"
17+
18+
val installationPath: Path?
19+
get() = descriptor?.pluginPath
20+
}

jetbrains_plugin/src/main/kotlin/org/zoocode/jetbrains/util/PluginResourceUtil.kt

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,10 @@
44

55
package org.zoocode.jetbrains.util
66

7-
import com.intellij.ide.plugins.IdeaPluginDescriptor
8-
import com.intellij.ide.plugins.PluginManagerCore
97
import com.intellij.openapi.diagnostic.Logger
10-
import com.intellij.openapi.extensions.PluginId
118
import org.zoocode.jetbrains.plugin.DEBUG_MODE
12-
import org.zoocode.jetbrains.plugin.WecoderPlugin
139
import org.zoocode.jetbrains.plugin.WecoderPluginService
1410
import java.io.File
15-
import java.nio.file.Files
1611
import java.nio.file.Paths
1712
import kotlin.io.path.pathString
1813

@@ -36,18 +31,19 @@ object PluginResourceUtil {
3631
// Debug mode: directly use plugin service to get resource path
3732
return WecoderPluginService.getDebugResource() + "/$resourceName"
3833
}
39-
val plugin = PluginManagerCore.getPlugin(PluginId.getId(pluginId))
40-
?: throw IllegalStateException("Cannot find plugin: $pluginId")
34+
require(pluginId == PluginConstants.PLUGIN_ID) { "Cannot access resources of another plugin: $pluginId" }
35+
val pluginPath = PluginInfo.installationPath
36+
?: throw IllegalStateException("Cannot determine the Zoo Code plugin path")
4137

4238
// Determine whether it is development mode or production mode
43-
val isDevMode = checkDevMode(plugin)
39+
val isDevMode = checkDevMode()
4440

4541
if (isDevMode) {
4642
// Development mode: load from classpath or project resource directory
47-
loadDevResource(resourceName, plugin)
43+
loadDevResource(resourceName, pluginPath)
4844
} else {
4945
// Production mode: load from plugin JAR or installation directory
50-
loadProdResource(resourceName, plugin)
46+
loadProdResource(resourceName, pluginPath)
5147
}
5248
} catch (e: Exception) {
5349
LOG.error("Failed to get plugin resource path: $resourceName", e)
@@ -58,17 +54,17 @@ object PluginResourceUtil {
5854
/**
5955
* Load resources in development mode
6056
*/
61-
private fun loadDevResource(resourceName: String, plugin: IdeaPluginDescriptor): String {
62-
val resourcePath = Paths.get(plugin.pluginPath.parent.parent.parent.parent.parent.pathString, "debug-resources/$resourceName")
57+
private fun loadDevResource(resourceName: String, pluginPath: java.nio.file.Path): String {
58+
val resourcePath = Paths.get(pluginPath.parent.parent.parent.parent.parent.pathString, "debug-resources/$resourceName")
6359
return resourcePath.toString()
6460
}
6561

6662
/**
6763
* Load resources in production mode
6864
*/
69-
private fun loadProdResource(resourceName: String, plugin: IdeaPluginDescriptor): String? {
65+
private fun loadProdResource(resourceName: String, pluginPath: java.nio.file.Path): String? {
7066
// Load from plugin installation directory (compatible with old version)
71-
val pluginDir = plugin.pluginPath.toFile()
67+
val pluginDir = pluginPath.toFile()
7268
val resourceDir = pluginDir.resolve(resourceName)
7369
if (resourceDir.exists()) {
7470
return resourceDir.absolutePath
@@ -79,7 +75,7 @@ object PluginResourceUtil {
7975
/**
8076
* Check whether it is in development mode
8177
*/
82-
private fun checkDevMode(plugin: IdeaPluginDescriptor): Boolean {
78+
private fun checkDevMode(): Boolean {
8379
return try {
8480
WecoderPluginService.getDebugMode() != DEBUG_MODE.NONE
8581
}catch (e: Exception){
@@ -112,4 +108,4 @@ object PluginResourceUtil {
112108
null
113109
}
114110
}
115-
}
111+
}

0 commit comments

Comments
 (0)