From 74439e198664f0bdffa15e0369f39429b0b790c4 Mon Sep 17 00:00:00 2001 From: GeeK Date: Sun, 21 Jun 2026 12:41:42 -0400 Subject: [PATCH] Fix: legacy vs EAP --- CHANGELOG.md | 6 +++ gradle.properties | 2 +- .../csv/CsvPluginDescriptorRetriever.java | 47 +++++++++++++++++++ .../plugins/csv/CsvPluginManager.java | 3 +- 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginDescriptorRetriever.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 4726873..3b2d209 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ ### Fixed +## 4.2.3 - Jun 21, 2026 + +### Fixed + +- branch code for retrieving plugin info for legacy vs EAP version + ## 4.2.2 - Jun 21, 2026 ### Changed diff --git a/gradle.properties b/gradle.properties index 1232e4e..fcba1dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ pluginName=CSV Editor pluginId=net.seesharpsoft.intellij.plugins.csv -pluginVersion=4.2.2 +pluginVersion=4.2.3 pluginSinceBuild=242 diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginDescriptorRetriever.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginDescriptorRetriever.java new file mode 100644 index 0000000..b0b087b --- /dev/null +++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginDescriptorRetriever.java @@ -0,0 +1,47 @@ +package net.seesharpsoft.intellij.plugins.csv; + +import com.intellij.ide.plugins.IdeaPluginDescriptor; +import com.intellij.openapi.application.ApplicationInfo; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.extensions.PluginId; +import com.intellij.openapi.util.BuildNumber; + +import java.lang.reflect.Method; + +public final class CsvPluginDescriptorRetriever { + + private static final Logger LOG = Logger.getInstance(CsvPluginDescriptorRetriever.class); + private static final PluginId PLUGIN_ID = PluginId.getId("net.seesharpsoft.intellij.plugins.csv"); + + public static IdeaPluginDescriptor getPluginDescriptor() { + BuildNumber buildNumber = ApplicationInfo.getInstance().getBuild(); + // PluginDetailsService is available from 2026.2, which roughly corresponds to build 262 + if (buildNumber.getBaselineVersion() >= 262) { + try { + Class serviceClass = Class.forName("com.intellij.ide.plugins.PluginDetailsService"); + Method getInstanceMethod = serviceClass.getMethod("getInstance"); + Object serviceInstance = getInstanceMethod.invoke(null); + Method getPluginMethod = serviceClass.getMethod("getPlugin", PluginId.class); + return (IdeaPluginDescriptor) getPluginMethod.invoke(serviceInstance, PLUGIN_ID); + } catch (Exception e) { + LOG.debug("Failed to retrieve plugin descriptor via PluginDetailsService", e); + return null; + } + } + + // Fallback for older versions or if reflection fails + try { + Class pluginManagerClass = Class.forName("com.intellij.ide.plugins.PluginManager"); + Method getInstanceMethod = pluginManagerClass.getMethod("getInstance"); + Object pluginManagerInstance = getInstanceMethod.invoke(null); + Method findEnabledPluginMethod = pluginManagerClass.getMethod("findEnabledPlugin", PluginId.class); + return (IdeaPluginDescriptor) findEnabledPluginMethod.invoke(pluginManagerInstance, PLUGIN_ID); + } catch (Exception e) { + LOG.debug("Failed to retrieve plugin descriptor via PluginManager reflection", e); + return null; + } + } + + private CsvPluginDescriptorRetriever() { + } +} diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginManager.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginManager.java index 880bcb6..b5703f0 100644 --- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginManager.java +++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginManager.java @@ -2,7 +2,6 @@ import com.intellij.DynamicBundle; import com.intellij.ide.plugins.IdeaPluginDescriptor; -import com.intellij.ide.plugins.PluginManager; import com.intellij.openapi.extensions.PluginId; import java.util.ResourceBundle; @@ -22,7 +21,7 @@ public static String getLocalizedText(String token) { } public static IdeaPluginDescriptor getPluginDescriptor() { - return PluginManager.getInstance().findEnabledPlugin(PluginId.getId("net.seesharpsoft.intellij.plugins.csv")); + return CsvPluginDescriptorRetriever.getPluginDescriptor(); } public static String getVersion() {