Skip to content

Commit

Permalink
Merge pull request #4793 from square/jwilson.0324.headers.wip
Browse files Browse the repository at this point in the history
Convert Headers to Kotlin
  • Loading branch information
swankjesse authored Mar 25, 2019
2 parents bbf96d3 + 198c4b5 commit 8059408
Show file tree
Hide file tree
Showing 19 changed files with 491 additions and 496 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.concurrent.TimeUnit;
import okhttp3.Headers;
import okhttp3.WebSocketListener;
import okhttp3.internal.Internal;
import okhttp3.internal.InternalKtKt;
import okhttp3.internal.http2.Settings;
import okhttp3.mockwebserver.internal.duplex.DuplexResponseBody;
import okio.Buffer;
Expand Down Expand Up @@ -138,7 +138,7 @@ public MockResponse addHeader(String name, Object value) {
* value.
*/
public MockResponse addHeaderLenient(String name, Object value) {
Internal.instance.addLenient(headers, name, String.valueOf(value));
InternalKtKt.addHeaderLenient(headers, name, String.valueOf(value));
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import okio.Timeout;
import org.junit.rules.ExternalResource;

import static okhttp3.internal.InternalKtKt.addHeaderLenient;
import static okhttp3.internal.Util.closeQuietly;
import static okhttp3.mockwebserver.SocketPolicy.CONTINUE_ALWAYS;
import static okhttp3.mockwebserver.SocketPolicy.DISCONNECT_AFTER_REQUEST;
Expand Down Expand Up @@ -656,7 +657,7 @@ private RecordedRequest readRequest(Socket socket, BufferedSource source, Buffer
boolean expectContinue = false;
String header;
while ((header = source.readUtf8LineStrict()).length() != 0) {
Internal.instance.addLenient(headers, header);
addHeaderLenient(headers, header);
String lowercaseHeader = header.toLowerCase(Locale.US);
if (contentLength == -1 && lowercaseHeader.startsWith("content-length:")) {
contentLength = Long.parseLong(header.substring(15).trim());
Expand Down
4 changes: 2 additions & 2 deletions okhttp-tests/src/test/java/okhttp3/CacheTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import javax.net.ssl.HostnameVerifier;
import okhttp3.internal.Internal;
import okhttp3.internal.InternalKtKt;
import okhttp3.internal.io.InMemoryFileSystem;
import okhttp3.internal.platform.Platform;
import okhttp3.mockwebserver.MockResponse;
Expand Down Expand Up @@ -1991,7 +1991,7 @@ private RecordedRequest assertClientSuppliedCondition(MockResponse seed, String
@Test public void emptyResponseHeaderNameFromCacheIsLenient() throws Exception {
Headers.Builder headers = new Headers.Builder()
.add("Cache-Control: max-age=120");
Internal.instance.addLenient(headers, ": A");
InternalKtKt.addHeaderLenient(headers, ": A");
server.enqueue(new MockResponse()
.setHeaders(headers.build())
.setBody("body"));
Expand Down
13 changes: 7 additions & 6 deletions okhttp-tests/src/test/java/okhttp3/CallTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
import static java.util.Arrays.asList;
import static okhttp3.CipherSuite.TLS_DH_anon_WITH_AES_128_GCM_SHA256;
import static okhttp3.TestUtil.awaitGarbageCollection;
import static okhttp3.internal.InternalKtKt.addHeaderLenient;
import static okhttp3.internal.platform.PlatformTest.getJvmSpecVersion;
import static okhttp3.tls.internal.TlsUtil.localhost;
import static org.assertj.core.api.Assertions.assertThat;
Expand Down Expand Up @@ -2790,12 +2791,12 @@ public void cancelWhileRequestHeadersAreSent_HTTP_2() throws Exception {

/** We forbid non-ASCII characters in outgoing request headers, but accept UTF-8. */
@Test public void responseHeaderParsingIsLenient() throws Exception {
Headers headers = new Headers.Builder()
.add("Content-Length", "0")
.addLenient("a\tb: c\u007fd")
.addLenient(": ef")
.addLenient("\ud83c\udf69: \u2615\ufe0f")
.build();
Headers.Builder headersBuilder = new Headers.Builder();
headersBuilder.add("Content-Length", "0");
addHeaderLenient(headersBuilder, "a\tb: c\u007fd");
addHeaderLenient(headersBuilder, ": ef");
addHeaderLenient(headersBuilder, "\ud83c\udf69: \u2615\ufe0f");
Headers headers = headersBuilder.build();
server.enqueue(new MockResponse().setHeaders(headers));

executeSynchronously("/")
Expand Down
14 changes: 5 additions & 9 deletions okhttp-tests/src/test/java/okhttp3/HeadersTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ public final class HeadersTest {
try {
Headers.of(Collections.singletonMap("User-Agent", null));
fail();
} catch (IllegalArgumentException expected) {
} catch (NullPointerException expected) {
}
}

Expand Down Expand Up @@ -835,8 +835,7 @@ public final class HeadersTest {
.add("testDate", (Date) null)
.build();
fail();
} catch (NullPointerException expected) {
assertThat(expected.getMessage()).isEqualTo("value for name testDate == null");
} catch (IllegalArgumentException expected) {
}
}

Expand All @@ -855,8 +854,7 @@ public final class HeadersTest {
.add("Test-Instant", (Instant) null)
.build();
fail();
} catch (NullPointerException expected) {
assertThat(expected.getMessage()).isEqualTo("value for name Test-Instant == null");
} catch (IllegalArgumentException expected) {
}
}

Expand All @@ -876,8 +874,7 @@ public final class HeadersTest {
.set("testDate", (Date) null)
.build();
fail();
} catch (NullPointerException expected) {
assertThat(expected.getMessage()).isEqualTo("value for name testDate == null");
} catch (IllegalArgumentException expected) {
}
}

Expand All @@ -897,8 +894,7 @@ public final class HeadersTest {
.set("Test-Instant", (Instant) null)
.build();
fail();
} catch (NullPointerException expected) {
assertThat(expected.getMessage()).isEqualTo("value for name Test-Instant == null");
} catch (IllegalArgumentException expected) {
}
}
}
8 changes: 4 additions & 4 deletions okhttp-tests/src/test/java/okhttp3/RequestTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -183,22 +183,22 @@ public final class RequestTest {
try {
builder.header(null, "Value");
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
builder.addHeader(null, "Value");
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
builder.header("Name", null);
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
builder.addHeader("Name", null);
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
}

Expand Down
27 changes: 14 additions & 13 deletions okhttp-tests/src/test/java/okhttp3/URLConnectionTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import okhttp3.internal.Internal;
import okhttp3.internal.InternalKtKt;
import okhttp3.internal.RecordingAuthenticator;
import okhttp3.internal.RecordingOkAuthenticator;
import okhttp3.internal.Util;
Expand Down Expand Up @@ -89,6 +89,7 @@
import static java.util.Locale.US;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static okhttp3.internal.InternalKtKt.addHeaderLenient;
import static okhttp3.internal.http.StatusLine.HTTP_PERM_REDIRECT;
import static okhttp3.internal.http.StatusLine.HTTP_TEMP_REDIRECT;
import static okhttp3.mockwebserver.SocketPolicy.DISCONNECT_AFTER_REQUEST;
Expand Down Expand Up @@ -150,25 +151,25 @@ public final class URLConnectionTest {
new Request.Builder()
.header(null, "j");
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
new Request.Builder()
.addHeader(null, "k");
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
new Request.Builder()
.addHeader("NullValue", null);
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
new Request.Builder()
.addHeader("AnotherNullValue", null);
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}

Response response = getResponse(request);
Expand Down Expand Up @@ -205,7 +206,7 @@ public final class URLConnectionTest {
try {
response.header(null);
fail();
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
Headers responseHeaders = response.headers();
assertThat(new LinkedHashSet<>(responseHeaders.values("A"))).isEqualTo(
Expand Down Expand Up @@ -3106,7 +3107,7 @@ private void reusedConnectionFailsWithPost(TransferKind transferKind, int reques

@Test public void emptyResponseHeaderNameIsLenient() throws Exception {
Headers.Builder headers = new Headers.Builder();
Internal.instance.addLenient(headers, ":A");
InternalKtKt.addHeaderLenient(headers, ":A");
server.enqueue(new MockResponse()
.setHeaders(headers.build())
.setBody("body"));
Expand Down Expand Up @@ -3150,12 +3151,12 @@ private void reusedConnectionFailsWithPost(TransferKind transferKind, int reques
}

@Test public void responseHeaderParsingIsLenient() throws Exception {
Headers headers = new Headers.Builder()
.add("Content-Length", "0")
.addLenient("a\tb: c\u007fd")
.addLenient(": ef")
.addLenient("\ud83c\udf69: \u2615\ufe0f")
.build();
Headers.Builder headersBuilder = new Headers.Builder();
headersBuilder.add("Content-Length", "0");
addHeaderLenient(headersBuilder, "a\tb: c\u007fd");
addHeaderLenient(headersBuilder, ": ef");
addHeaderLenient(headersBuilder, "\ud83c\udf69: \u2615\ufe0f");
Headers headers = headersBuilder.build();
server.enqueue(new MockResponse()
.setHeaders(headers));

Expand Down
23 changes: 23 additions & 0 deletions okhttp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,29 @@ task japicmp(type: me.champeau.gradle.japicmp.JapicmpTask, dependsOn: 'jar') {
'okhttp3.FormBody$Builder#add(java.lang.String, java.lang.String)',
'okhttp3.FormBody$Builder#addEncoded(java.lang.String, java.lang.String)',
'okhttp3.FormBody$Builder#build()',
'okhttp3.Headers#byteCount()',
'okhttp3.Headers#get(java.lang.String)',
'okhttp3.Headers#getDate(java.lang.String)',
'okhttp3.Headers#getInstant(java.lang.String)',
'okhttp3.Headers#name(int)',
'okhttp3.Headers#names()',
'okhttp3.Headers#newBuilder()',
'okhttp3.Headers#size()',
'okhttp3.Headers#toMultimap()',
'okhttp3.Headers#value(int)',
'okhttp3.Headers#values(java.lang.String)',
'okhttp3.Headers$Builder#add(java.lang.String)',
'okhttp3.Headers$Builder#add(java.lang.String, java.lang.String)',
'okhttp3.Headers$Builder#add(java.lang.String, java.util.Date)',
'okhttp3.Headers$Builder#add(java.lang.String, java.time.Instant)',
'okhttp3.Headers$Builder#addAll(okhttp3.Headers)',
'okhttp3.Headers$Builder#addUnsafeNonAscii(java.lang.String, java.lang.String)',
'okhttp3.Headers$Builder#build()',
'okhttp3.Headers$Builder#get(java.lang.String)',
'okhttp3.Headers$Builder#removeAll(java.lang.String)',
'okhttp3.Headers$Builder#set(java.lang.String, java.util.Date)',
'okhttp3.Headers$Builder#set(java.lang.String, java.time.Instant)',
'okhttp3.Headers$Builder#set(java.lang.String, java.lang.String)',
'okhttp3.HttpUrl#encodedFragment()',
'okhttp3.HttpUrl#encodedPassword()',
'okhttp3.HttpUrl#encodedPath()',
Expand Down
6 changes: 4 additions & 2 deletions okhttp/src/main/java/okhttp3/Cache.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
import okio.Sink;
import okio.Source;

import static okhttp3.internal.InternalKtKt.addHeaderLenient;

/**
* Caches HTTP and HTTPS responses to the filesystem so they may be reused, saving time and
* bandwidth.
Expand Down Expand Up @@ -546,7 +548,7 @@ private static final class Entry {
Headers.Builder varyHeadersBuilder = new Headers.Builder();
int varyRequestHeaderLineCount = readInt(source);
for (int i = 0; i < varyRequestHeaderLineCount; i++) {
varyHeadersBuilder.addLenient(source.readUtf8LineStrict());
addHeaderLenient(varyHeadersBuilder, source.readUtf8LineStrict());
}
varyHeaders = varyHeadersBuilder.build();

Expand All @@ -557,7 +559,7 @@ private static final class Entry {
Headers.Builder responseHeadersBuilder = new Headers.Builder();
int responseHeaderLineCount = readInt(source);
for (int i = 0; i < responseHeaderLineCount; i++) {
responseHeadersBuilder.addLenient(source.readUtf8LineStrict());
addHeaderLenient(responseHeadersBuilder, source.readUtf8LineStrict());
}
String sendRequestMillisString = responseHeadersBuilder.get(SENT_MILLIS);
String receivedResponseMillisString = responseHeadersBuilder.get(RECEIVED_MILLIS);
Expand Down
Loading

0 comments on commit 8059408

Please sign in to comment.