plugin advertiser: load plugins from custom repositories too

This commit is contained in:
nik
2015-04-08 14:04:07 +03:00
parent b465a8d29b
commit 673f355ca5
3 changed files with 21 additions and 6 deletions
@@ -45,8 +45,7 @@ import java.io.*;
import java.net.HttpURLConnection;
import java.net.URISyntaxException;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.List;
import java.util.*;
/**
* @author stathik
@@ -68,6 +67,24 @@ public class RepositoryHelper {
return hosts;
}
/**
* Loads list of plugins, compatible with a current build, from all configured repositories
*/
@NotNull
public static List<IdeaPluginDescriptor> loadPluginsFromAllRepositories(@Nullable ProgressIndicator indicator) throws IOException {
List<IdeaPluginDescriptor> result = new ArrayList<IdeaPluginDescriptor>();
Set<String> addedPluginIds = new HashSet<String>();
for (String host : getPluginHosts()) {
List<IdeaPluginDescriptor> plugins = loadPlugins(host, null, indicator);
for (IdeaPluginDescriptor plugin : plugins) {
if (addedPluginIds.add(plugin.getPluginId().getIdString())) {
result.add(plugin);
}
}
}
return result;
}
/**
* Loads list of plugins, compatible with a current build, from a main plugin repository.
*/
@@ -162,7 +162,7 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati
@Override
public void run(@NotNull ProgressIndicator indicator) {
try {
myAllPlugins = RepositoryHelper.loadPlugins(indicator);
myAllPlugins = RepositoryHelper.loadPluginsFromAllRepositories(indicator);
for (IdeaPluginDescriptor loadedPlugin : myAllPlugins) {
if (plugins.contains(new PluginsAdvertiser.Plugin(loadedPlugin.getPluginId(), null, false))) {
myPlugins.add(PluginDownloader.createDownloader(loadedPlugin));
@@ -41,8 +41,6 @@ import com.intellij.reference.SoftReference;
import com.intellij.ui.EditorNotifications;
import com.intellij.util.Function;
import com.intellij.util.PlatformUtils;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.LinkedMultiMap;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.io.HttpRequests;
import com.intellij.util.xmlb.XmlSerializer;
@@ -247,7 +245,7 @@ public class PluginsAdvertiser implements StartupActivity {
@Override
public void run() {
try {
myAllPlugins = RepositoryHelper.loadPlugins(null);
myAllPlugins = RepositoryHelper.loadPluginsFromAllRepositories(null);
if (project.isDisposed()) return;
if (extensions == null) {
loadSupportedExtensions(myAllPlugins);