GitilesUrls: Replace Function with regular method Change-Id: I139079bb3c51247384da14d79508051eec186195
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java index 2d07c49..27d4a4b 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
@@ -16,7 +16,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; -import com.google.common.base.Function; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; @@ -32,22 +31,18 @@ * character that should not be encoded, while almost any other non-alpha, non-numeric character * will be encoded using URL style encoding. */ - Function<String, String> NAME_ESCAPER = - new Function<String, String>() { - @Override - public String apply(String s) { - try { - return URLEncoder.encode(s, UTF_8.name()) - .replace("%2F", "/") - .replace("%2f", "/") - .replace("+", "%20") - .replace("%2B", "+") - .replace("%2b", "+"); - } catch (UnsupportedEncodingException e) { - throw new IllegalStateException(e); - } - } - }; + static String escapeName(String name) { + try { + return URLEncoder.encode(name, UTF_8.name()) + .replace("%2F", "/") + .replace("%2f", "/") + .replace("+", "%20") + .replace("%2B", "+") + .replace("%2b", "+"); + } catch (UnsupportedEncodingException e) { + throw new IllegalStateException(e); + } + } /** * Return the name of the host from the request.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java index c792634..3468303 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -19,7 +19,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; -import static com.google.gitiles.GitilesUrls.NAME_ESCAPER; +import static com.google.gitiles.GitilesUrls.escapeName; import static java.nio.charset.StandardCharsets.UTF_8; import com.google.common.annotations.VisibleForTesting; @@ -714,13 +714,13 @@ default: throw new IllegalStateException("Unknown view type: " + type); } - String baseUrl = NAME_ESCAPER.apply(url.toString()); + String baseUrl = escapeName(url.toString()); url = new StringBuilder(); if (!params.isEmpty()) { url.append('?').append(paramsToString(params)); } if (!Strings.isNullOrEmpty(anchor)) { - url.append('#').append(NAME_ESCAPER.apply(anchor)); + url.append('#').append(escapeName(anchor)); } return baseUrl + url; }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java index 4b107c3..d10060b 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
@@ -187,7 +187,7 @@ writer.write(ref); writer.write(' '); } - writer.write(GitilesUrls.NAME_ESCAPER.apply(stripPrefix(prefix, repo.name))); + writer.write(GitilesUrls.escapeName(stripPrefix(prefix, repo.name))); writer.write('\n'); } }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java index 4f85bc2..c8c6cfc 100644 --- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java +++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java
@@ -15,7 +15,7 @@ package com.google.gitiles; import static com.google.common.truth.Truth.assertThat; -import static com.google.gitiles.GitilesUrls.NAME_ESCAPER; +import static com.google.gitiles.GitilesUrls.escapeName; import org.junit.Test; import org.junit.runner.RunWith; @@ -26,31 +26,31 @@ public class GitilesUrlsTest { @Test public void nameEscaperEscapesAppropriateSpecialCharacters() throws Exception { - assertThat(NAME_ESCAPER.apply("foo_bar")).isEqualTo("foo_bar"); - assertThat(NAME_ESCAPER.apply("foo-bar")).isEqualTo("foo-bar"); - assertThat(NAME_ESCAPER.apply("foo%bar")).isEqualTo("foo%25bar"); - assertThat(NAME_ESCAPER.apply("foo&bar")).isEqualTo("foo%26bar"); - assertThat(NAME_ESCAPER.apply("foo(bar")).isEqualTo("foo%28bar"); - assertThat(NAME_ESCAPER.apply("foo)bar")).isEqualTo("foo%29bar"); - assertThat(NAME_ESCAPER.apply("foo:bar")).isEqualTo("foo%3Abar"); - assertThat(NAME_ESCAPER.apply("foo;bar")).isEqualTo("foo%3Bbar"); - assertThat(NAME_ESCAPER.apply("foo=bar")).isEqualTo("foo%3Dbar"); - assertThat(NAME_ESCAPER.apply("foo?bar")).isEqualTo("foo%3Fbar"); - assertThat(NAME_ESCAPER.apply("foo[bar")).isEqualTo("foo%5Bbar"); - assertThat(NAME_ESCAPER.apply("foo]bar")).isEqualTo("foo%5Dbar"); - assertThat(NAME_ESCAPER.apply("foo{bar")).isEqualTo("foo%7Bbar"); - assertThat(NAME_ESCAPER.apply("foo}bar")).isEqualTo("foo%7Dbar"); + assertThat(escapeName("foo_bar")).isEqualTo("foo_bar"); + assertThat(escapeName("foo-bar")).isEqualTo("foo-bar"); + assertThat(escapeName("foo%bar")).isEqualTo("foo%25bar"); + assertThat(escapeName("foo&bar")).isEqualTo("foo%26bar"); + assertThat(escapeName("foo(bar")).isEqualTo("foo%28bar"); + assertThat(escapeName("foo)bar")).isEqualTo("foo%29bar"); + assertThat(escapeName("foo:bar")).isEqualTo("foo%3Abar"); + assertThat(escapeName("foo;bar")).isEqualTo("foo%3Bbar"); + assertThat(escapeName("foo=bar")).isEqualTo("foo%3Dbar"); + assertThat(escapeName("foo?bar")).isEqualTo("foo%3Fbar"); + assertThat(escapeName("foo[bar")).isEqualTo("foo%5Bbar"); + assertThat(escapeName("foo]bar")).isEqualTo("foo%5Dbar"); + assertThat(escapeName("foo{bar")).isEqualTo("foo%7Bbar"); + assertThat(escapeName("foo}bar")).isEqualTo("foo%7Dbar"); } @Test public void nameEscaperDoesNotEscapeSlashes() throws Exception { - assertThat(NAME_ESCAPER.apply("foo/bar")).isEqualTo("foo/bar"); + assertThat(escapeName("foo/bar")).isEqualTo("foo/bar"); } @Test public void nameEscaperEscapesSpacesWithPercentInsteadOfPlus() throws Exception { - assertThat(NAME_ESCAPER.apply("foo+bar")).isEqualTo("foo+bar"); - assertThat(NAME_ESCAPER.apply("foo bar")).isEqualTo("foo%20bar"); - assertThat(NAME_ESCAPER.apply("foo%20bar")).isEqualTo("foo%2520bar"); + assertThat(escapeName("foo+bar")).isEqualTo("foo+bar"); + assertThat(escapeName("foo bar")).isEqualTo("foo%20bar"); + assertThat(escapeName("foo%20bar")).isEqualTo("foo%2520bar"); } }