Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

pluginName=CSV Editor
pluginId=net.seesharpsoft.intellij.plugins.csv
pluginVersion=4.2.2
pluginVersion=4.2.3

pluginSinceBuild=242

Expand Down
Original file line number Diff line number Diff line change
@@ -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() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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() {
Expand Down
Loading