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 {
