From 41f4842a508730e6b34d0faf6cd7f2dc26c013c8 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 27 Nov 2013 20:02:45 +0100 Subject: [PATCH] plugin advertiser: ensure that older plugins won't be ever suggested (cherry picked from commit 3bd2a55d4272f3154be73a93155cc6c512a7dcaa) --- .../pluginsAdvertisement/PluginsAdvertiser.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java index f14580b8abd7..3a0a0400cdd6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java @@ -105,9 +105,9 @@ public class PluginsAdvertiser implements StartupActivity { } private static Map> loadSupportedExtensions(@NotNull List allPlugins) { - final Set availableIds = new HashSet(); + final Map availableIds = new HashMap(); for (IdeaPluginDescriptor plugin : allPlugins) { - availableIds.add(plugin.getPluginId().getIdString()); + availableIds.put(plugin.getPluginId().getIdString(), plugin); } final String pluginRepositoryUrl = FEATURE_IMPLEMENTATIONS_URL + "featureType=" + FileTypeFactory.FILE_TYPE_FACTORY_EP.getName(); try { @@ -125,10 +125,14 @@ public class PluginsAdvertiser implements StartupActivity { final String pluginId = StringUtil.unquoteString(jsonObject.get("pluginId").toString()); final JsonElement bundledExt = jsonObject.get("bundled"); boolean isBundled = Boolean.parseBoolean(bundledExt.toString()); - if (!availableIds.contains(pluginId) && !isBundled) continue; + final IdeaPluginDescriptor fromServerPluginDescription = availableIds.get(pluginId); + if (fromServerPluginDescription == null && !isBundled) continue; - final IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId(pluginId)); - if (plugin != null && plugin.isEnabled()) continue; + final IdeaPluginDescriptor loadedPlugin = PluginManager.getPlugin(PluginId.getId(pluginId)); + if (loadedPlugin != null && loadedPlugin.isEnabled()) continue; + + if (loadedPlugin != null && fromServerPluginDescription != null && + StringUtil.compareVersionNumbers(loadedPlugin.getVersion(), fromServerPluginDescription.getVersion()) >= 0) continue; final JsonElement ext = jsonObject.get("implementationName"); final String extension = StringUtil.unquoteString(ext.toString());