From 8fabc7526a41bdebfe865165397dcf48df652d4b Mon Sep 17 00:00:00 2001 From: TATSUNO Yasuhiro Date: Thu, 26 Jan 2023 22:30:37 +0900 Subject: [PATCH] Switch statement is more efficient --- .../client/UrlPathSegmentEscaper.java | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/treasuredata/client/UrlPathSegmentEscaper.java b/src/main/java/com/treasuredata/client/UrlPathSegmentEscaper.java index c67c7139..8ea7a307 100644 --- a/src/main/java/com/treasuredata/client/UrlPathSegmentEscaper.java +++ b/src/main/java/com/treasuredata/client/UrlPathSegmentEscaper.java @@ -2,9 +2,6 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -17,7 +14,7 @@ private UrlPathSegmentEscaper() { } - private static String replaceWithMap(String text, Pattern pattern, Map map) + private static String replaceAllMatched(String text, Pattern pattern) { Matcher matcher = pattern.matcher(text); if (!matcher.find()) { @@ -27,7 +24,7 @@ private static String replaceWithMap(String text, Pattern pattern, Map REPLACEMENT_MAP; - static { - Map m = new HashMap<>(); - m.put("+", "%20"); - m.put("%21", "!"); - m.put("%24", "$"); - m.put("%26", "&"); - m.put("%27", "'"); - m.put("%28", "("); - m.put("%29", ")"); - m.put("%2B", "+"); - m.put("%2C", ","); - m.put("%3A", ":"); - m.put("%3B", ";"); - m.put("%3D", "="); - m.put("%7E", "~"); - m.put("%40", "@"); - REPLACEMENT_MAP = Collections.unmodifiableMap(m); + + private static String replace(String token) + { + switch (token) { + case "+": return "%20"; + case "%21": return "!"; + case "%24": return "$"; + case "%26": return "&"; + case "%27": return "'"; + case "%28": return "("; + case "%29": return ")"; + case "%2B": return "+"; + case "%2C": return ","; + case "%3A": return ":"; + case "%3B": return ";"; + case "%3D": return "="; + case "%7E": return "~"; + case "%40": return "@"; + default: throw new IllegalStateException("Unknown token: " + token); + } } static String escape(String s) { try { String encoded = URLEncoder.encode(s, "UTF-8"); - return replaceWithMap(encoded, GUAVA_INCOMPATIBLE, REPLACEMENT_MAP); + return replaceAllMatched(encoded, GUAVA_INCOMPATIBLE); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e);