plugin advertiser: ensure that older plugins won't be ever suggested

(cherry picked from commit 3bd2a55d4272f3154be73a93155cc6c512a7dcaa)
This commit is contained in:
anna
2013-11-28 12:21:41 +01:00
parent b9ee30c79b
commit 41f4842a50
@@ -105,9 +105,9 @@ public class PluginsAdvertiser implements StartupActivity {
}
private static Map<String, Set<Plugin>> loadSupportedExtensions(@NotNull List<IdeaPluginDescriptor> allPlugins) {
final Set<String> availableIds = new HashSet<String>();
final Map<String, IdeaPluginDescriptor> availableIds = new HashMap<String, IdeaPluginDescriptor>();
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());