From e4dd6cfd63b251fba7a37e773f91c6bb4150b6bf Mon Sep 17 00:00:00 2001 From: jwilson Date: Fri, 30 Oct 2015 20:32:20 -0400 Subject: [PATCH] Handle null fragments. --- .../java/com/squareup/okhttp/HttpUrlTest.java | 20 +++++++++++++++++++ .../java/com/squareup/okhttp/HttpUrl.java | 10 ++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java index 385dc3087..e91780ef0 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java @@ -1168,4 +1168,24 @@ public final class HttpUrlTest { assertEquals(urlString, url.newBuilder().build().toString()); assertEquals("http://%6d%6D:%6d%6D@host/%6d%6D?%6d%6D", url.resolve("").toString()); } + + @Test public void clearFragment() throws Exception { + HttpUrl url = HttpUrl.parse("http://host/#fragment") + .newBuilder() + .fragment(null) + .build(); + assertEquals("http://host/", url.toString()); + assertEquals(null, url.fragment()); + assertEquals(null, url.encodedFragment()); + } + + @Test public void clearEncodedFragment() throws Exception { + HttpUrl url = HttpUrl.parse("http://host/#fragment") + .newBuilder() + .encodedFragment(null) + .build(); + assertEquals("http://host/", url.toString()); + assertEquals(null, url.fragment()); + assertEquals(null, url.encodedFragment()); + } } diff --git a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java index ae80c291c..381f00c15 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java +++ b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java @@ -851,14 +851,16 @@ public final class HttpUrl { } public Builder fragment(String fragment) { - if (fragment == null) throw new IllegalArgumentException("fragment == null"); - this.encodedFragment = canonicalize(fragment, FRAGMENT_ENCODE_SET, false, false); + this.encodedFragment = fragment != null + ? canonicalize(fragment, FRAGMENT_ENCODE_SET, false, false) + : null; return this; } public Builder encodedFragment(String encodedFragment) { - if (encodedFragment == null) throw new IllegalArgumentException("encodedFragment == null"); - this.encodedFragment = canonicalize(encodedFragment, FRAGMENT_ENCODE_SET, true, false); + this.encodedFragment = encodedFragment != null + ? canonicalize(encodedFragment, FRAGMENT_ENCODE_SET, true, false) + : null; return this; }