Repository: calcite
Updated Branches:
  refs/heads/master 2ce41591b -> 478de569c


[CALCITE-1752] Use URLDecoder to unwrap encoded characters

Closes #434


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/478de569
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/478de569
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/478de569

Branch: refs/heads/master
Commit: 478de569cf4b7084207b40ce957f47b6e8015fe7
Parents: 2ce4159
Author: Josh Elser <[email protected]>
Authored: Tue Apr 25 14:06:01 2017 -0400
Committer: Josh Elser <[email protected]>
Committed: Tue Apr 25 15:59:20 2017 -0400

----------------------------------------------------------------------
 .../org/apache/calcite/sql/parser/SqlParserTest.java  |  3 ++-
 .../test/java/org/apache/calcite/test/CsvTest.java    | 14 ++++++++++----
 .../java/org/apache/calcite/test/PigAdapterTest.java  | 13 ++++++++++++-
 3 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/478de569/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java 
b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
index 05089bf..40037cf 100644
--- a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
@@ -49,6 +49,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.URL;
+import java.net.URLDecoder;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -6910,7 +6911,7 @@ public class SqlParserTest {
     String path = "hsqldb-model.json";
     final URL inUrl = SqlParserTest.class.getResource("/" + path);
     // URL will convert spaces to %20, undo that
-    String x = inUrl.getFile().replace("%20", " ");
+    String x = URLDecoder.decode(inUrl.getFile(), "UTF-8");
     assert x.endsWith(path);
     x = x.substring(0, x.length() - path.length());
     assert x.endsWith("core/target/test-classes/");

http://git-wip-us.apache.org/repos/asf/calcite/blob/478de569/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
----------------------------------------------------------------------
diff --git a/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java 
b/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
index 5d731d6..00c59ee 100644
--- a/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
+++ b/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
@@ -34,7 +34,9 @@ import org.junit.Test;
 import java.io.File;
 import java.io.PrintStream;
 import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
 import java.net.URL;
+import java.net.URLDecoder;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
@@ -353,11 +355,15 @@ public class CsvTest {
   private String resourcePath(String path) {
     final URL url = CsvTest.class.getResource("/" + path);
     // URL converts a space to %20, undo that.
-    String s = url.toString().replace("%20", " ");
-    if (s.startsWith("file:")) {
-      s = s.substring("file:".length());
+    try {
+      String s = URLDecoder.decode(url.toString(), "UTF-8");
+      if (s.startsWith("file:")) {
+        s = s.substring("file:".length());
+      }
+      return s;
+    } catch (UnsupportedEncodingException e) {
+      throw new RuntimeException(e);
     }
-    return s;
   }
 
   private static void collect(List<String> result, ResultSet resultSet)

http://git-wip-us.apache.org/repos/asf/calcite/blob/478de569/pig/src/test/java/org/apache/calcite/test/PigAdapterTest.java
----------------------------------------------------------------------
diff --git a/pig/src/test/java/org/apache/calcite/test/PigAdapterTest.java 
b/pig/src/test/java/org/apache/calcite/test/PigAdapterTest.java
index 58adbe0..e02c90a 100644
--- a/pig/src/test/java/org/apache/calcite/test/PigAdapterTest.java
+++ b/pig/src/test/java/org/apache/calcite/test/PigAdapterTest.java
@@ -21,6 +21,8 @@ import com.google.common.collect.ImmutableMap;
 
 import org.junit.Test;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
@@ -33,7 +35,16 @@ public class PigAdapterTest extends AbstractPigTest {
   // Undo the %20 replacement of a space by URL
   public static final ImmutableMap<String, String> MODEL =
     ImmutableMap.of("model",
-      PigAdapterTest.class.getResource("/model.json").getPath().replace("%20", 
" "));
+      decodeUrl(PigAdapterTest.class.getResource("/model.json").getPath()));
+
+  /** URL-decodes the given string with UTF-8 encoding */
+  private static String decodeUrl(String urlEncoded) {
+    try {
+      return URLDecoder.decode(urlEncoded, "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      throw new RuntimeException(e);
+    }
+  }
 
   @Test
   public void testScanAndFilter() throws Exception {

Reply via email to