mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
plugin updater: accept older plugin versions for broken plugins (IDEA-125646)
This commit is contained in:
@@ -269,7 +269,7 @@ public class InstalledPluginsTableModel extends PluginTableModel {
|
||||
}
|
||||
|
||||
private static void updateExistingPluginInfo(IdeaPluginDescriptor descr, IdeaPluginDescriptor existing) {
|
||||
int state = StringUtil.compareVersionNumbers(descr.getVersion(), existing.getVersion());
|
||||
int state = PluginDownloader.compareVersionsSkipBroken(existing, descr.getVersion());
|
||||
final PluginId pluginId = existing.getPluginId();
|
||||
final String idString = pluginId.getIdString();
|
||||
final JDOMExternalizableStringList installedPlugins = PluginManagerUISettings.getInstance().getInstalledPlugins();
|
||||
|
||||
+10
-2
@@ -103,7 +103,7 @@ public class PluginDownloader {
|
||||
//store old plugins file
|
||||
descriptor = PluginManager.getPlugin(PluginId.getId(myPluginId));
|
||||
LOG.assertTrue(descriptor != null);
|
||||
if (myPluginVersion != null && StringUtil.compareVersionNumbers(descriptor.getVersion(), myPluginVersion) >= 0) {
|
||||
if (myPluginVersion != null && compareVersionsSkipBroken(descriptor, myPluginVersion) <= 0) {
|
||||
LOG.info("Plugin " + myPluginId + ": current version (max) " + myPluginVersion);
|
||||
return false;
|
||||
}
|
||||
@@ -140,7 +140,7 @@ public class PluginDownloader {
|
||||
}
|
||||
|
||||
myPluginVersion = actualDescriptor.getVersion();
|
||||
if (descriptor != null && StringUtil.compareVersionNumbers(descriptor.getVersion(), actualDescriptor.getVersion()) >= 0) {
|
||||
if (descriptor != null && compareVersionsSkipBroken(descriptor, myPluginVersion) <= 0) {
|
||||
LOG.info("Plugin " + myPluginId + ": current version (max) " + myPluginVersion);
|
||||
return false; //was not updated
|
||||
}
|
||||
@@ -155,6 +155,14 @@ public class PluginDownloader {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static int compareVersionsSkipBroken(IdeaPluginDescriptor descriptor, String newPluginVersion) {
|
||||
int state = StringUtil.compareVersionNumbers(newPluginVersion, descriptor.getVersion());
|
||||
if (PluginManagerCore.isBrokenPlugin(descriptor) && state < 0) {
|
||||
state = 1;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static IdeaPluginDescriptorImpl loadDescriptionFromJar(final File file) throws IOException {
|
||||
IdeaPluginDescriptorImpl descriptor = PluginManagerCore.loadDescriptorFromJar(file);
|
||||
|
||||
+2
-2
@@ -252,7 +252,7 @@ public final class UpdateChecker {
|
||||
prepareToInstall(downloaded, loadedPlugin, indicator, buildNumber);
|
||||
} else {
|
||||
final String newVersion = loadedPlugin.getVersion();
|
||||
if (StringUtil.compareVersionNumbers(newVersion, installedPlugin.getVersion()) > 0) {
|
||||
if (PluginDownloader.compareVersionsSkipBroken(installedPlugin, newVersion) > 0) {
|
||||
updateSettings.myOutdatedPlugins.add(idString);
|
||||
if (isReadyToUpdate(idString, newVersion) && !disabledPlugins.contains(idString)) {
|
||||
prepareToInstall(downloaded, loadedPlugin, indicator, buildNumber);
|
||||
@@ -422,7 +422,7 @@ public final class UpdateChecker {
|
||||
final PluginDownloader downloader = new PluginDownloader(pluginId, finalPluginUrl, pluginVersion);
|
||||
final IdeaPluginDescriptor loadedPlugin = PluginManager.getPlugin(PluginId.getId(pluginId));
|
||||
if (loadedPlugin == null || pluginVersion == null ||
|
||||
StringUtil.compareVersionNumbers(pluginVersion, loadedPlugin.getVersion()) > 0) {
|
||||
PluginDownloader.compareVersionsSkipBroken(loadedPlugin, pluginVersion) > 0) {
|
||||
if (isReadyToUpdate(pluginId, pluginVersion) && downloader.prepareToInstall(progressIndicator, buildNumber)) {
|
||||
downloaded.put(PluginId.getId(pluginId), downloader);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user