Skip to content

Commit 1d344b4

Browse files
authored
Merge pull request #1004 from SeeSharpSoft/rel423
Fix: legacy vs EAP
2 parents ce5c724 + 74439e1 commit 1d344b4

4 files changed

Lines changed: 55 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010

1111
### Fixed
1212

13+
## 4.2.3 - Jun 21, 2026
14+
15+
### Fixed
16+
17+
- branch code for retrieving plugin info for legacy vs EAP version
18+
1319
## 4.2.2 - Jun 21, 2026
1420

1521
### Changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
pluginName=CSV Editor
66
pluginId=net.seesharpsoft.intellij.plugins.csv
7-
pluginVersion=4.2.2
7+
pluginVersion=4.2.3
88

99
pluginSinceBuild=242
1010

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package net.seesharpsoft.intellij.plugins.csv;
2+
3+
import com.intellij.ide.plugins.IdeaPluginDescriptor;
4+
import com.intellij.openapi.application.ApplicationInfo;
5+
import com.intellij.openapi.diagnostic.Logger;
6+
import com.intellij.openapi.extensions.PluginId;
7+
import com.intellij.openapi.util.BuildNumber;
8+
9+
import java.lang.reflect.Method;
10+
11+
public final class CsvPluginDescriptorRetriever {
12+
13+
private static final Logger LOG = Logger.getInstance(CsvPluginDescriptorRetriever.class);
14+
private static final PluginId PLUGIN_ID = PluginId.getId("net.seesharpsoft.intellij.plugins.csv");
15+
16+
public static IdeaPluginDescriptor getPluginDescriptor() {
17+
BuildNumber buildNumber = ApplicationInfo.getInstance().getBuild();
18+
// PluginDetailsService is available from 2026.2, which roughly corresponds to build 262
19+
if (buildNumber.getBaselineVersion() >= 262) {
20+
try {
21+
Class<?> serviceClass = Class.forName("com.intellij.ide.plugins.PluginDetailsService");
22+
Method getInstanceMethod = serviceClass.getMethod("getInstance");
23+
Object serviceInstance = getInstanceMethod.invoke(null);
24+
Method getPluginMethod = serviceClass.getMethod("getPlugin", PluginId.class);
25+
return (IdeaPluginDescriptor) getPluginMethod.invoke(serviceInstance, PLUGIN_ID);
26+
} catch (Exception e) {
27+
LOG.debug("Failed to retrieve plugin descriptor via PluginDetailsService", e);
28+
return null;
29+
}
30+
}
31+
32+
// Fallback for older versions or if reflection fails
33+
try {
34+
Class<?> pluginManagerClass = Class.forName("com.intellij.ide.plugins.PluginManager");
35+
Method getInstanceMethod = pluginManagerClass.getMethod("getInstance");
36+
Object pluginManagerInstance = getInstanceMethod.invoke(null);
37+
Method findEnabledPluginMethod = pluginManagerClass.getMethod("findEnabledPlugin", PluginId.class);
38+
return (IdeaPluginDescriptor) findEnabledPluginMethod.invoke(pluginManagerInstance, PLUGIN_ID);
39+
} catch (Exception e) {
40+
LOG.debug("Failed to retrieve plugin descriptor via PluginManager reflection", e);
41+
return null;
42+
}
43+
}
44+
45+
private CsvPluginDescriptorRetriever() {
46+
}
47+
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPluginManager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.intellij.DynamicBundle;
44
import com.intellij.ide.plugins.IdeaPluginDescriptor;
5-
import com.intellij.ide.plugins.PluginManager;
65
import com.intellij.openapi.extensions.PluginId;
76

87
import java.util.ResourceBundle;
@@ -22,7 +21,7 @@ public static String getLocalizedText(String token) {
2221
}
2322

2423
public static IdeaPluginDescriptor getPluginDescriptor() {
25-
return PluginManager.getInstance().findEnabledPlugin(PluginId.getId("net.seesharpsoft.intellij.plugins.csv"));
24+
return CsvPluginDescriptorRetriever.getPluginDescriptor();
2625
}
2726

2827
public static String getVersion() {

0 commit comments

Comments
 (0)