From fa61cd8be5011656682c809d9cb880678bdca597 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 17:52:17 +0100 Subject: [PATCH] =?UTF-8?q?AbstractExternalFilter=20=E2=80=94=20use=20Http?= =?UTF-8?q?Requests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../documentation/AbstractExternalFilter.java | 48 ++++++++----------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java index a64917f88e4e..d923262be097 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java @@ -37,7 +37,6 @@ import org.jetbrains.annotations.Nullable; import java.io.*; import java.net.URL; -import java.net.URLConnection; import java.util.Locale; import java.util.concurrent.Future; import java.util.jar.JarFile; @@ -243,34 +242,27 @@ public abstract class AbstractExternalFilter { }); } + @Nullable private static String guessEncoding(URL url) { - String result = null; - BufferedReader reader = null; - try { - URLConnection connection = url.openConnection(); - result = connection.getContentEncoding(); - if (result != null) return result; - //noinspection IOResourceOpenedButNotSafelyClosed - reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - for (String htmlLine = reader.readLine(); htmlLine != null; htmlLine = reader.readLine()) { - result = parseContentEncoding(htmlLine); - if (result != null) { - break; - } - } - } - catch (IOException ignored) { - } - finally { - if (reader != null) { + return HttpRequests.request(url.toExternalForm()).connect(new HttpRequests.RequestProcessor() { + @Override + public String process(@NotNull HttpRequests.Request request) throws IOException { + String result = request.getConnection().getContentEncoding(); + BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); try { + for (String htmlLine = reader.readLine(); htmlLine != null; htmlLine = reader.readLine()) { + result = parseContentEncoding(htmlLine); + if (result != null) { + break; + } + } + } + finally { reader.close(); } - catch (IOException ignored) { - } + return result; } - } - return result; + }, null, null); } @Nullable @@ -475,11 +467,9 @@ public abstract class AbstractExternalFilter { if (!htmlLine.contains("charset")) { return null; } - final Matcher matcher = CHARSET_META_PATTERN.matcher(htmlLine); - if (matcher.find()) { - return matcher.group(1); - } - return null; + + Matcher matcher = CHARSET_META_PATTERN.matcher(htmlLine); + return matcher.find() ? matcher.group(1) : null; } private static void appendLine(StringBuilder buffer, final String read) {