zero-tolerance charset fixes
authorIlyas Selimov <ilyas.selimov@jetbrains.com>
Thu, 13 Aug 2020 04:54:38 +0000 (11:54 +0700)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Thu, 13 Aug 2020 04:55:28 +0000 (04:55 +0000)
GitOrigin-RevId: 0ac0e0269912b2330a586bacf9180e786e260dc6

java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java
java/java-impl/src/com/intellij/jarRepository/services/MavenRepositoryService.java
java/java-impl/src/com/intellij/jarRepository/services/artifactory/ArtifactoryRepositoryService.java
platform/tasks-platform-impl/src/com/intellij/tasks/impl/TaskUtil.java
plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/ArtifactsDownloadingTestCase.java
plugins/repository-search/src/main/java/org/jetbrains/idea/kpmsearch/PackageSearchService.java
plugins/sh/src/com/intellij/sh/ShExplainShellIntention.java
plugins/tasks/tasks-compatibility/src/com/intellij/tasks/impl/BaseRepositoryImpl.java
plugins/tasks/tasks-core/src/com/intellij/tasks/generic/GenericRepositoryUtil.java
plugins/tasks/tasks-core/src/com/intellij/tasks/youtrack/YouTrackIntellisense.java
python/pydevSrc/com/jetbrains/python/debugger/pydev/RunCustomOperationCommand.java

index 375a8f99e4673787f859c3530a09a5f21c2f4018..c003404c41bf5801fa918002c8e4caa199178ac6 100644 (file)
@@ -45,7 +45,6 @@ import com.intellij.openapi.util.Comparing;
 import com.intellij.openapi.util.Disposer;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.vfs.CharsetToolkit;
 import com.intellij.openapi.vfs.JarFileSystem;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.JavaPsiFacade;
@@ -63,9 +62,12 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.jps.model.serialization.PathMacroUtil;
 
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
 import java.net.InetAddress;
 import java.net.ServerSocket;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 
 public abstract class JavaTestFrameworkRunnableState<T extends
@@ -337,7 +339,7 @@ public abstract class JavaTestFrameworkRunnableState<T extends
 
     try {
       final File tempFile = FileUtil.createTempFile("command.line", "", true);
-      try (PrintWriter writer = new PrintWriter(tempFile, CharsetToolkit.UTF8)) {
+      try (PrintWriter writer = new PrintWriter(tempFile, StandardCharsets.UTF_8)) {
         ShortenCommandLine shortenCommandLine = getConfiguration().getShortenCommandLine();
         boolean useDynamicClasspathForForkMode = shortenCommandLine == null
                                                  ? JdkUtil.useDynamicClasspath(getConfiguration().getProject())
@@ -597,7 +599,7 @@ public abstract class JavaTestFrameworkRunnableState<T extends
   protected void writeClassesPerModule(String packageName,
                                        JavaParameters javaParameters,
                                        Map<Module, List<String>> perModule,
-                                       @NotNull String filters) throws FileNotFoundException, UnsupportedEncodingException {
+                                       @NotNull String filters) throws IOException {
     if (perModule != null) {
       final String classpath = getScope() == TestSearchScope.WHOLE_PROJECT
                                ? null : javaParameters.getClassPath().getPathsString();
@@ -607,7 +609,7 @@ public abstract class JavaTestFrameworkRunnableState<T extends
       //like plugin and corresponding IDE register the same components twice
       boolean toChangeWorkingDirectory = toChangeWorkingDirectory(workingDirectory);
 
-      try (PrintWriter wWriter = new PrintWriter(myWorkingDirsFile, CharsetToolkit.UTF8)) {
+      try (PrintWriter wWriter = new PrintWriter(myWorkingDirsFile, StandardCharsets.UTF_8)) {
         wWriter.println(packageName);
         for (Module module : perModule.keySet()) {
           wWriter.println(toChangeWorkingDirectory ? PathMacroUtil.getModuleDir(module.getModuleFilePath()) : workingDirectory);
index 8b3d0ca50dc469fbdded2891a30eacb0f3a9903d..51f61e6bd8991bd4981da649b1e7f3bc7233fb78 100644 (file)
@@ -24,10 +24,9 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
-import java.net.URL;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
 
@@ -57,12 +56,7 @@ public abstract class MavenRepositoryService {
       if (entry.getValue() == null) {
         return null;
       }
-      try {
-        return entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), "UTF-8");
-      }
-      catch (UnsupportedEncodingException ignore) {
-        return null;
-      }
+      return entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8);
     }, "&");
   }
 
index f816aa9dd88f3258cd58e10bc2cc4f293936b432..56019dfc6bb0bdc4f692155b4f5385c244233a33 100644 (file)
@@ -15,6 +15,7 @@ import org.jetbrains.annotations.NotNull;
 
 import java.io.IOException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 
 /**
@@ -93,7 +94,7 @@ public class ArtifactoryRepositoryService extends MavenRepositoryService {
 
     String className = template.getClassNames();
     final String searchString = className.endsWith("*") || className.endsWith("?") ? className : className + ".class";
-    Url requestUrl = toUrl(url, "search/archive", "name=" + URLEncoder.encode(searchString.trim(), "UTF-8"));
+    Url requestUrl = toUrl(url, "search/archive", "name=" + URLEncoder.encode(searchString.trim(), StandardCharsets.UTF_8));
     ArtifactoryModel.ArchiveResults results = gson.fromJson(
       HttpRequests.request(requestUrl)
         .productNameAsUserAgent().readString(),
index 2bd19163ec296c959a393d8f950f68395f8a9b9b..a2bf221789dd327afe7ccd693ae41840801e3c9e 100644 (file)
@@ -10,7 +10,6 @@ import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.Comparing;
 import com.intellij.openapi.util.JDOMUtil;
 import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.vfs.CharsetToolkit;
 import com.intellij.psi.codeStyle.NameUtil;
 import com.intellij.tasks.CommitPlaceholderProvider;
 import com.intellij.tasks.LocalTask;
@@ -24,8 +23,8 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -249,12 +248,7 @@ public final class TaskUtil {
    */
   @NotNull
   public static String encodeUrl(@NotNull String s) {
-    try {
-      return URLEncoder.encode(s, CharsetToolkit.UTF8);
-    }
-    catch (UnsupportedEncodingException e) {
-      throw new AssertionError("UTF-8 is not supported");
-    }
+    return URLEncoder.encode(s, StandardCharsets.UTF_8);
   }
 
   public static List<Task> filterTasks(final String pattern, final List<? extends Task> tasks) {
index ef79fb037a35ce464bc0b96c6a577f8da6b8f364..2a11994926d8485ec4884207f8d4ab0a5e1479c6 100644 (file)
@@ -11,6 +11,7 @@ import org.jetbrains.idea.maven.MavenImportingTestCase;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 
 public abstract class ArtifactsDownloadingTestCase extends MavenImportingTestCase {
@@ -35,7 +36,7 @@ public abstract class ArtifactsDownloadingTestCase extends MavenImportingTestCas
     digest.update(FileUtil.loadFileBytes(jar));
     byte[] sha1 = digest.digest();
 
-    PrintWriter out = new PrintWriter(new File(dir, name + ".sha1"), "UTF-8");
+    PrintWriter out = new PrintWriter(new File(dir, name + ".sha1"), StandardCharsets.UTF_8);
     try {
       for (byte b : sha1) out.printf("%02x", b);
       out.println("  " + name);
index f7c3d98e8d925dfb7ff5271139a7db209c1a71ed..47d01510219a124cce03d824a5dc91f7a5e915ab 100644 (file)
@@ -14,8 +14,8 @@ import org.jetbrains.idea.reposearch.DependencySearchProvider;
 import org.jetbrains.idea.reposearch.RepositoryArtifactData;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
@@ -161,11 +161,6 @@ public class PackageSearchService implements DependencySearchProvider {
 
   @NotNull
   private static String encode(@NotNull String s) {
-    try {
-      return URLEncoder.encode(s.trim(), "UTF-8");
-    }
-    catch (UnsupportedEncodingException e) {
-      throw new RuntimeException(e);
-    }
+    return URLEncoder.encode(s.trim(), StandardCharsets.UTF_8);
   }
 }
index ce37a91b0f4917f088681e613c5118eddf0bf148..72e85882f9ce6408936bf2ec28976eae55b12798 100644 (file)
@@ -3,14 +3,12 @@ package com.intellij.sh;
 
 import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
 import com.intellij.ide.BrowserUtil;
-import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.editor.Caret;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.editor.SelectionModel;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Pass;
 import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.vfs.CharsetToolkit;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.impl.source.tree.LeafPsiElement;
@@ -27,15 +25,14 @@ import com.intellij.util.containers.ContainerUtil;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 public class ShExplainShellIntention extends BaseIntentionAction {
-  private final static Logger LOG = Logger.getInstance(ShExplainShellIntention.class);
   @NonNls private static final String FEATURE_ACTION_ID = "ExplainShellUsed";
 
   @NotNull
@@ -112,13 +109,7 @@ public class ShExplainShellIntention extends BaseIntentionAction {
   }
 
   private static void explain(@NotNull String text) {
-    String encodedText = text;
-    try {
-      encodedText = URLEncoder.encode(text, CharsetToolkit.UTF8);
-    }
-    catch (UnsupportedEncodingException e) {
-      LOG.warn("Couldn't encode " + text + " for explainshell URL", e);
-    }
+    String encodedText = URLEncoder.encode(text, StandardCharsets.UTF_8);
     BrowserUtil.browse("https://explainshell.com/explain?cmd=" + encodedText);
   }
 }
index e4c445f250b2019f42019faa2fd3fafdd7cf996c..63d1310c73237eed03e49e8c03974e6d2d839c99 100644 (file)
@@ -10,8 +10,8 @@ import org.jetbrains.annotations.ApiStatus;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 
 /**
  * Base class for HTTP-based repositories functioning over Apache Commons HttpClient 3.1.
@@ -42,12 +42,7 @@ public abstract class BaseRepositoryImpl extends BaseRepository {
   }
 
   protected static String encodeUrl(@NotNull String s) {
-    try {
-      return URLEncoder.encode(s, "UTF-8");
-    }
-    catch (UnsupportedEncodingException e) {
-      throw new RuntimeException(e);
-    }
+    return URLEncoder.encode(s, StandardCharsets.UTF_8);
   }
 
   protected HttpClient getHttpClient() {
index 21a750935a45370e72191a168b12c04afab37e67..889c6acfc705a386d0c928dfa525eacbd0abf1c6 100644 (file)
@@ -17,13 +17,14 @@ package com.intellij.tasks.generic;
 
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.containers.ContainerUtil;
-import java.util.HashMap;
 import org.apache.commons.httpclient.HttpMethod;
 import org.apache.commons.httpclient.NameValuePair;
 import org.apache.commons.httpclient.methods.PostMethod;
 
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -71,7 +72,7 @@ public class GenericRepositoryUtil {
       }
       // TODO: add proper escape|unescape property to template variables
       if (escape && !name.equals(GenericRepository.SERVER_URL)) {
-        m.appendReplacement(sb, URLEncoder.encode(replacement, "utf-8"));
+        m.appendReplacement(sb, URLEncoder.encode(replacement, StandardCharsets.UTF_8));
       }
       else {
         m.appendReplacement(sb, replacement);
index 0f80e99a91ccde3ae0fbee72e3202ed63df722d8..bd8badc547228e8646202835491e2773c46ffd79 100644 (file)
@@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
 
 import java.io.InputStream;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -111,7 +112,8 @@ public class YouTrackIntellisense {
     }
     LOG.debug("Cache " + (response != null? "hit" : "miss"));
     if (response == null) {
-      final String url = String.format("%s?filter=%s&caret=%d", INTELLISENSE_RESOURCE, URLEncoder.encode(query, "utf-8"), caret);
+      final String url = String.format("%s?filter=%s&caret=%d", INTELLISENSE_RESOURCE, URLEncoder.encode(query, StandardCharsets.UTF_8),
+                                       caret);
       final long startTime = System.currentTimeMillis();
       response = new Response(myRepository.doREST(url, false).getResponseBodyAsStream());
       LOG.debug(String.format("Intellisense request to YouTrack took %d ms to complete", System.currentTimeMillis() - startTime));
index 6ad1ab585fdebe8301022941f998e1d222d9a538..2163df5429ed307638e5997fb68ebb2eccfc92fc 100644 (file)
@@ -3,8 +3,8 @@ package com.jetbrains.python.debugger.pydev;
 
 import com.intellij.openapi.diagnostic.Logger;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 
 
 /**
@@ -64,12 +64,7 @@ public class RunCustomOperationCommand<T> extends AbstractCommand<T> {
   }
 
   private static String encode(String in) {
-    try {
-      return URLEncoder.encode(in, "UTF-8");
-    } catch (UnsupportedEncodingException e) {
-      LOG.error("Unreachable? UTF-8 is always supported.", e);
-      return "";
-    }
+    return URLEncoder.encode(in, StandardCharsets.UTF_8);
   }
 }