diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/updateSettings/impl')
3 files changed, 47 insertions, 21 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java index 9739d75be7e7..c93e69438766 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java @@ -61,6 +61,7 @@ public class PluginDownloader { private String myFileName; private String myPluginName; + private BuildNumber myBuildNumber; private File myFile; private File myOldFile; @@ -74,12 +75,18 @@ public class PluginDownloader { myPluginVersion = pluginVersion; } - public PluginDownloader(String pluginId, String pluginUrl, String pluginVersion, String fileName, String pluginName) { + public PluginDownloader(String pluginId, + String pluginUrl, + String pluginVersion, + String fileName, + String pluginName, + BuildNumber buildNumber) { myPluginId = pluginId; myPluginUrl = pluginUrl; myPluginVersion = pluginVersion; myFileName = fileName; myPluginName = pluginName; + myBuildNumber = buildNumber; } @SuppressWarnings("UnusedDeclaration") @@ -89,7 +96,7 @@ public class PluginDownloader { } public boolean prepareToInstall(ProgressIndicator pi) throws IOException { - return prepareToInstall(pi, null); + return prepareToInstall(pi, myBuildNumber); } public boolean prepareToInstall(@Nullable ProgressIndicator pi, @Nullable BuildNumber forBuildNumber) throws IOException { @@ -289,9 +296,15 @@ public class PluginDownloader { } private URLConnection openConnection(final String url) throws IOException { - final URLConnection connection = ApplicationManager.getApplication() != null - ? HttpConfigurable.getInstance().openConnection(url) - : new URL(url).openConnection(); + final URLConnection connection; + if (ApplicationManager.getApplication() != null) { + connection = HttpConfigurable.getInstance().openConnection(url); + } + else { + connection = new URL(url).openConnection(); + connection.setConnectTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + connection.setReadTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + } if (connection instanceof HttpURLConnection) { final int responseCode = ((HttpURLConnection)connection).getResponseCode(); if (responseCode != HttpURLConnection.HTTP_OK) { @@ -385,9 +398,14 @@ public class PluginDownloader { } public static PluginDownloader createDownloader(IdeaPluginDescriptor descriptor) throws UnsupportedEncodingException { + return createDownloader(descriptor, null); + } + + public static PluginDownloader createDownloader(IdeaPluginDescriptor descriptor, + BuildNumber buildNumber) throws UnsupportedEncodingException { PluginDownloader downloader = new PluginDownloader(descriptor.getPluginId().getIdString(), - UpdateChecker.getDownloadUrl(descriptor), - descriptor.getVersion(), null, descriptor.getName()); + UpdateChecker.getDownloadUrl(descriptor, buildNumber), + descriptor.getVersion(), null, descriptor.getName(), buildNumber); downloader.setDescriptor(descriptor); return downloader; } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java index 7e1c81ad2fbc..f1206ef190f1 100755 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateChecker.java @@ -240,13 +240,13 @@ public final class UpdateChecker { updateSettings.myOutdatedPlugins.clear(); if (!toUpdate.isEmpty()) { try { - final List<IdeaPluginDescriptor> process = RepositoryHelper.loadPluginsFromRepository(indicator); + final List<IdeaPluginDescriptor> process = RepositoryHelper.loadPluginsFromRepository(indicator, buildNumber); for (IdeaPluginDescriptor loadedPlugin : process) { final PluginId pluginId = loadedPlugin.getPluginId(); final String idString = pluginId.getIdString(); if (!toUpdate.containsKey(idString)) continue; if (!downloaded.containsKey(pluginId)) { - prepareToInstall(PluginDownloader.createDownloader(loadedPlugin), buildNumber, downloaded, incompatiblePlugins, true, indicator); + prepareToInstall(PluginDownloader.createDownloader(loadedPlugin, buildNumber), buildNumber, downloaded, incompatiblePlugins, true, indicator); } } } @@ -377,7 +377,7 @@ public final class UpdateChecker { final List<IdeaPluginDescriptor> descriptors = RepositoryHelper.loadPluginsFromDescription(inputStream, indicator); for (IdeaPluginDescriptor descriptor : descriptors) { ((PluginNode)descriptor).setRepositoryName(host); - prepareToInstall(PluginDownloader.createDownloader(descriptor), buildNumber, downloaded, incompatiblePlugins, collectToUpdate, + prepareToInstall(PluginDownloader.createDownloader(descriptor, buildNumber), buildNumber, downloaded, incompatiblePlugins, collectToUpdate, indicator); } @@ -425,7 +425,7 @@ public final class UpdateChecker { if (progressIndicator != null) { progressIndicator.setText2(finalPluginUrl); } - final PluginDownloader downloader = new PluginDownloader(pluginId, finalPluginUrl, pluginVersion, null, null); + final PluginDownloader downloader = new PluginDownloader(pluginId, finalPluginUrl, pluginVersion, null, null, buildNumber); prepareToInstall(downloader, buildNumber, downloaded, incompatiblePlugins, collectToUpdate, indicator); } catch (IOException e) { @@ -625,11 +625,15 @@ public final class UpdateChecker { urlToCheck = url; } - HttpURLConnection connection = ApplicationManager.getApplication() != null ? - HttpConfigurable.getInstance().openHttpConnection(urlToCheck) : - (HttpURLConnection)new URL(urlToCheck).openConnection(); - connection.setReadTimeout(HttpConfigurable.CONNECTION_TIMEOUT); - connection.setConnectTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + HttpURLConnection connection; + if (ApplicationManager.getApplication() != null) { + connection = HttpConfigurable.getInstance().openHttpConnection(urlToCheck); + } + else { + connection = (HttpURLConnection)new URL(urlToCheck).openConnection(); + connection.setReadTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + connection.setConnectTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + } connection.connect(); inputStreams[0] = connection.getInputStream(); @@ -885,7 +889,7 @@ public final class UpdateChecker { } } - static String getDownloadUrl(IdeaPluginDescriptor descriptor) throws UnsupportedEncodingException { + static String getDownloadUrl(IdeaPluginDescriptor descriptor, @Nullable BuildNumber buildNumber) throws UnsupportedEncodingException { String url = null; if (descriptor instanceof PluginNode) { url = ((PluginNode)descriptor).getDownloadUrl(); @@ -904,11 +908,13 @@ public final class UpdateChecker { String uuid = ApplicationManager.getApplication() == null ? UUID.randomUUID().toString() : getInstallationUID(PropertiesComponent.getInstance()); - String buildNumber = ApplicationManager.getApplication() != null - ? ApplicationInfo.getInstance().getApiVersion() - : ApplicationInfoImpl.getShadowInstance().getBuild().asString(); + String buildNumberAsString = buildNumber != null + ? buildNumber.asString() + : ApplicationManager.getApplication() != null + ? ApplicationInfo.getInstance().getApiVersion() + : ApplicationInfoImpl.getShadowInstance().getBuild().asString(); url = RepositoryHelper.getDownloadUrl() + URLEncoder.encode(descriptor.getPluginId().getIdString(), "UTF8") + - "&build=" + buildNumber + "&uuid=" + URLEncoder.encode(uuid, "UTF8"); + "&build=" + buildNumberAsString + "&uuid=" + URLEncoder.encode(uuid, "UTF8"); } return url; } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java index 94e287e0fdb7..97082c394aaf 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdatesXmlLoader.java @@ -74,6 +74,8 @@ public class UpdatesXmlLoader { int followCount = 2; while(true) { cnx = requestUrl.openConnection(); + cnx.setConnectTimeout(HttpConfigurable.CONNECTION_TIMEOUT); + cnx.setReadTimeout(HttpConfigurable.CONNECTION_TIMEOUT); if (cnx instanceof HttpURLConnection) { HttpURLConnection hcnx = (HttpURLConnection)cnx; |