From 8bc100eaad0f3e61cb3c7bbb1b3e098f5635411b Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Fri, 7 Mar 2014 11:04:22 -0800 Subject: [PATCH] Strip 2.0 APIs from the 1.5 branch. --- .../squareup/okhttp/benchmarks/Client.java | 6 - .../okhttp/benchmarks/OkHttpAsync.java | 94 ----- .../okhttp/internal/spdy/SpdyServer.java | 4 +- .../okhttp/mockwebserver/MockWebServer.java | 12 +- okcurl/README.md | 7 - okcurl/pom.xml | 94 ----- .../java/com/squareup/okhttp/curl/Main.java | 254 ------------ .../main/resources/okcurl-version.properties | 1 - .../com/squareup/okhttp/curl/MainTest.java | 96 ----- .../com/squareup/okhttp/AsyncApiTest.java | 371 ------------------ .../squareup/okhttp/ConnectionPoolTest.java | 4 +- .../com/squareup/okhttp/DispatcherTest.java | 189 --------- .../com/squareup/okhttp/RecordedResponse.java | 4 + .../squareup/okhttp/RecordingReceiver.java | 2 + .../java/com/squareup/okhttp/RequestTest.java | 3 +- .../java/com/squareup/okhttp/SyncApiTest.java | 268 ------------- .../okhttp/internal/http/CookiesTest.java | 8 +- .../internal/http/ExternalHttp2Example.java | 4 +- .../internal/http/ExternalSpdyExample.java | 4 +- .../okhttp/internal/http/HeadersTest.java | 3 - .../internal/http/HttpResponseCacheTest.java | 2 - .../http/ResponseCacheAdapterTest.java | 9 +- .../okhttp/internal}/okio/ByteStringTest.java | 2 +- .../internal}/okio/DeflaterSinkTest.java | 2 +- .../okhttp/internal}/okio/GzipSourceTest.java | 4 +- .../internal}/okio/InflaterSourceTest.java | 2 +- .../okio/OkBufferReadUtf8LineTest.java | 2 +- .../okhttp/internal}/okio/OkBufferTest.java | 2 +- .../okhttp/internal}/okio/OkioTest.java | 4 +- .../internal}/okio/ReadUtf8LineTest.java | 2 +- .../internal}/okio/RealBufferedSinkTest.java | 4 +- .../RealBufferedSourceReadUtf8LineTest.java | 2 +- .../okio/RealBufferedSourceTest.java | 5 +- .../okhttp/internal/spdy/BaseTestHandler.java | 4 +- .../internal/spdy/HpackDraft05Test.java | 4 +- .../internal/spdy/Http20Draft09Test.java | 6 +- .../okhttp/internal/spdy/MockSpdyPeer.java | 8 +- .../okhttp/internal/spdy/Spdy3Test.java | 4 +- .../internal/spdy/SpdyConnectionTest.java | 12 +- okhttp/pom.xml | 6 + .../com/squareup/okhttp/CacheControl.java | 1 + .../java/com/squareup/okhttp/Connection.java | 19 +- .../java/com/squareup/okhttp/Dispatcher.java | 161 -------- .../squareup/okhttp/HttpResponseCache.java | 9 +- .../main/java/com/squareup/okhttp/Job.java | 273 ------------- .../com/squareup/okhttp/OkAuthenticator.java | 2 +- .../com/squareup/okhttp/OkHttpClient.java | 91 +---- .../com/squareup/okhttp/OkResponseCache.java | 5 + .../java/com/squareup/okhttp/Protocol.java | 26 +- .../com/squareup/okhttp/TunnelRequest.java | 1 + .../okhttp/internal/DiskLruCache.java | 8 +- .../squareup/okhttp/internal/Platform.java | 2 +- .../com/squareup/okhttp/internal/Util.java | 26 +- .../okhttp/internal/http/CacheStrategy.java | 2 - .../okhttp/{ => internal/http}/Failure.java | 2 +- .../okhttp/{ => internal/http}/Headers.java | 2 +- .../internal/http/HttpAuthenticator.java | 3 - .../okhttp/internal/http/HttpConnection.java | 16 +- .../okhttp/internal/http/HttpEngine.java | 13 +- .../okhttp/internal/http/HttpTransport.java | 6 +- .../internal/http/HttpURLConnectionImpl.java | 11 +- .../okhttp/internal/http/OkHeaders.java | 3 - .../okhttp/{ => internal/http}/Request.java | 6 +- .../okhttp/internal/http/RequestLine.java | 1 - .../okhttp/{ => internal/http}/Response.java | 13 +- .../internal/http/ResponseCacheAdapter.java | 3 - .../okhttp/internal/http/RetryableSink.java | 8 +- .../okhttp/internal/http/SpdyTransport.java | 15 +- .../okhttp/internal/http/Transport.java | 6 +- .../okhttp/internal}/okio/Base64.java | 2 +- .../okhttp/internal}/okio/BufferedSink.java | 2 +- .../okhttp/internal}/okio/BufferedSource.java | 2 +- .../okhttp/internal}/okio/ByteString.java | 2 +- .../okhttp/internal}/okio/Deadline.java | 2 +- .../okhttp/internal}/okio/DeflaterSink.java | 4 +- .../okhttp/internal}/okio/GzipSource.java | 2 +- .../okhttp/internal}/okio/InflaterSource.java | 2 +- .../okhttp/internal}/okio/OkBuffer.java | 10 +- .../squareup/okhttp/internal}/okio/Okio.java | 4 +- .../internal}/okio/RealBufferedSink.java | 2 +- .../internal}/okio/RealBufferedSource.java | 4 +- .../okhttp/internal}/okio/Segment.java | 2 +- .../okhttp/internal}/okio/SegmentPool.java | 2 +- .../squareup/okhttp/internal}/okio/Sink.java | 2 +- .../okhttp/internal}/okio/Source.java | 2 +- .../squareup/okhttp/internal}/okio/Util.java | 2 +- .../okhttp/internal/spdy/FrameReader.java | 4 +- .../okhttp/internal/spdy/FrameWriter.java | 2 +- .../squareup/okhttp/internal/spdy/Header.java | 2 +- .../okhttp/internal/spdy/HpackDraft05.java | 10 +- .../okhttp/internal/spdy/Http20Draft09.java | 12 +- .../okhttp/internal/spdy/Huffman.java | 2 +- .../internal/spdy/NameValueBlockReader.java | 14 +- .../okhttp/internal/spdy/PushObserver.java | 2 +- .../squareup/okhttp/internal/spdy/Spdy3.java | 12 +- .../okhttp/internal/spdy/SpdyConnection.java | 10 +- .../okhttp/internal/spdy/SpdyStream.java | 10 +- .../okhttp/internal/spdy/Variant.java | 4 +- okio/pom.xml | 29 -- pom.xml | 2 - 100 files changed, 238 insertions(+), 2173 deletions(-) delete mode 100644 benchmarks/src/main/java/com/squareup/okhttp/benchmarks/OkHttpAsync.java delete mode 100644 okcurl/README.md delete mode 100644 okcurl/pom.xml delete mode 100644 okcurl/src/main/java/com/squareup/okhttp/curl/Main.java delete mode 100644 okcurl/src/main/resources/okcurl-version.properties delete mode 100644 okcurl/src/test/java/com/squareup/okhttp/curl/MainTest.java delete mode 100644 okhttp-tests/src/test/java/com/squareup/okhttp/AsyncApiTest.java delete mode 100644 okhttp-tests/src/test/java/com/squareup/okhttp/DispatcherTest.java delete mode 100644 okhttp-tests/src/test/java/com/squareup/okhttp/SyncApiTest.java rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/ByteStringTest.java (99%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/DeflaterSinkTest.java (98%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/GzipSourceTest.java (98%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/InflaterSourceTest.java (99%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/OkBufferReadUtf8LineTest.java (94%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/OkBufferTest.java (99%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/OkioTest.java (96%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/ReadUtf8LineTest.java (98%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/RealBufferedSinkTest.java (98%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/RealBufferedSourceReadUtf8LineTest.java (96%) rename {okio/src/test/java => okhttp-tests/src/test/java/com/squareup/okhttp/internal}/okio/RealBufferedSourceTest.java (98%) delete mode 100644 okhttp/src/main/java/com/squareup/okhttp/Dispatcher.java delete mode 100644 okhttp/src/main/java/com/squareup/okhttp/Job.java rename okhttp/src/main/java/com/squareup/okhttp/{ => internal/http}/Failure.java (96%) rename okhttp/src/main/java/com/squareup/okhttp/{ => internal/http}/Headers.java (99%) rename okhttp/src/main/java/com/squareup/okhttp/{ => internal/http}/Request.java (98%) rename okhttp/src/main/java/com/squareup/okhttp/{ => internal/http}/Response.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Base64.java (99%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/BufferedSink.java (97%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/BufferedSource.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/ByteString.java (99%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Deadline.java (97%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/DeflaterSink.java (96%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/GzipSource.java (99%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/InflaterSource.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/OkBuffer.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Okio.java (97%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/RealBufferedSink.java (99%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/RealBufferedSource.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Segment.java (99%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/SegmentPool.java (97%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Sink.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Source.java (98%) rename {okio/src/main/java => okhttp/src/main/java/com/squareup/okhttp/internal}/okio/Util.java (97%) delete mode 100644 okio/pom.xml diff --git a/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/Client.java b/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/Client.java index bd777aa35..0f076a610 100644 --- a/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/Client.java +++ b/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/Client.java @@ -22,12 +22,6 @@ enum Client { } }, - OkHttpAsync { - @Override HttpClient create() { - return new OkHttpAsync(); - } - }, - Apache { @Override HttpClient create() { return new ApacheHttpClient(); diff --git a/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/OkHttpAsync.java b/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/OkHttpAsync.java deleted file mode 100644 index b7633b76a..000000000 --- a/benchmarks/src/main/java/com/squareup/okhttp/benchmarks/OkHttpAsync.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2014 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp.benchmarks; - -import com.squareup.okhttp.Dispatcher; -import com.squareup.okhttp.Failure; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.squareup.okhttp.internal.SslContextBuilder; -import java.io.IOException; -import java.net.URL; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.SSLSocketFactory; - -class OkHttpAsync implements HttpClient { - private static final boolean VERBOSE = false; - - private final AtomicInteger requestsInFlight = new AtomicInteger(); - - private OkHttpClient client; - private Response.Receiver receiver; - private int concurrencyLevel; - private int targetBacklog; - - @Override public void prepare(final Benchmark benchmark) { - concurrencyLevel = benchmark.concurrencyLevel; - targetBacklog = benchmark.targetBacklog; - - client = new OkHttpClient(); - client.setProtocols(benchmark.protocols); - client.setDispatcher(new Dispatcher(new ThreadPoolExecutor(benchmark.concurrencyLevel, - benchmark.concurrencyLevel, 60, TimeUnit.SECONDS, new LinkedBlockingQueue()))); - - if (benchmark.tls) { - SSLContext sslContext = SslContextBuilder.localhost(); - SSLSocketFactory socketFactory = sslContext.getSocketFactory(); - HostnameVerifier hostnameVerifier = new HostnameVerifier() { - @Override public boolean verify(String s, SSLSession session) { - return true; - } - }; - client.setSslSocketFactory(socketFactory); - client.setHostnameVerifier(hostnameVerifier); - } - - receiver = new Response.Receiver() { - @Override public void onFailure(Failure failure) { - System.out.println("Failed: " + failure.exception()); - } - - @Override public boolean onResponse(Response response) throws IOException { - Response.Body body = response.body(); - long total = SynchronousHttpClient.readAllAndClose(body.byteStream()); - long finish = System.nanoTime(); - if (VERBOSE) { - long start = (Long) response.request().tag(); - System.out.printf("Transferred % 8d bytes in %4d ms%n", - total, TimeUnit.NANOSECONDS.toMillis(finish - start)); - } - requestsInFlight.decrementAndGet(); - return true; - } - }; - } - - @Override public void enqueue(URL url) throws Exception { - requestsInFlight.incrementAndGet(); - client.enqueue(new Request.Builder().tag(System.nanoTime()).url(url).build(), receiver); - } - - @Override public synchronized boolean acceptingJobs() { - return requestsInFlight.get() < (concurrencyLevel + targetBacklog); - } -} diff --git a/mockwebserver/src/main/java/com/squareup/okhttp/internal/spdy/SpdyServer.java b/mockwebserver/src/main/java/com/squareup/okhttp/internal/spdy/SpdyServer.java index 098f3c93b..fdd7f8acf 100644 --- a/mockwebserver/src/main/java/com/squareup/okhttp/internal/spdy/SpdyServer.java +++ b/mockwebserver/src/main/java/com/squareup/okhttp/internal/spdy/SpdyServer.java @@ -19,6 +19,8 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.Protocol; import com.squareup.okhttp.internal.SslContextBuilder; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.Okio; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -29,8 +31,6 @@ import java.util.Arrays; import java.util.List; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; -import okio.BufferedSink; -import okio.Okio; import org.eclipse.jetty.npn.NextProtoNego; import static com.squareup.okhttp.internal.Util.headerEntries; diff --git a/mockwebserver/src/main/java/com/squareup/okhttp/mockwebserver/MockWebServer.java b/mockwebserver/src/main/java/com/squareup/okhttp/mockwebserver/MockWebServer.java index a1edf0ac0..492cd8d93 100644 --- a/mockwebserver/src/main/java/com/squareup/okhttp/mockwebserver/MockWebServer.java +++ b/mockwebserver/src/main/java/com/squareup/okhttp/mockwebserver/MockWebServer.java @@ -21,6 +21,10 @@ import com.squareup.okhttp.Protocol; import com.squareup.okhttp.internal.NamedRunnable; import com.squareup.okhttp.internal.Platform; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; import com.squareup.okhttp.internal.spdy.ErrorCode; import com.squareup.okhttp.internal.spdy.Header; import com.squareup.okhttp.internal.spdy.IncomingStreamHandler; @@ -63,10 +67,6 @@ import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; -import okio.BufferedSink; -import okio.ByteString; -import okio.OkBuffer; -import okio.Okio; import static com.squareup.okhttp.mockwebserver.SocketPolicy.DISCONNECT_AT_START; import static com.squareup.okhttp.mockwebserver.SocketPolicy.FAIL_HANDSHAKE; @@ -110,7 +110,7 @@ public final class MockWebServer { private int port = -1; private boolean npnEnabled = true; - private List npnProtocols = Protocol.HTTP2_SPDY3_AND_HTTP; + private List npnProtocols = Util.HTTP2_SPDY3_AND_HTTP; public int getPort() { if (port == -1) throw new IllegalStateException("Cannot retrieve port before calling play()"); @@ -334,7 +334,7 @@ public final class MockWebServer { if (npnEnabled) { ByteString selectedProtocol = Platform.get().getNpnSelectedProtocol(sslSocket); - protocol = Protocol.find(selectedProtocol); + protocol = Util.getProtocol(selectedProtocol); } openClientSockets.remove(raw); } else { diff --git a/okcurl/README.md b/okcurl/README.md deleted file mode 100644 index cea5be406..000000000 --- a/okcurl/README.md +++ /dev/null @@ -1,7 +0,0 @@ -OkCurl -====== - -_A curl for the next-generation web._ - -OkCurl is an OkHttp-backed curl clone which allows you to test OkHttp's HTTP engine (including -SPDY and HTTP/2) against web servers. diff --git a/okcurl/pom.xml b/okcurl/pom.xml deleted file mode 100644 index af0ba2e21..000000000 --- a/okcurl/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - 4.0.0 - - - com.squareup.okhttp - parent - 2.0.0-SNAPSHOT - - - okcurl - OkCurl - - - - com.squareup.okhttp - okhttp - ${project.version} - - - org.bouncycastle - bcprov-jdk15on - - - org.mortbay.jetty.npn - npn-boot - - - io.airlift - airline - - - com.google.guava - guava - - - - junit - junit - test - - - - - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - jar-with-dependencies - - - - com.squareup.okhttp.curl.Main - - - - - - package - - single - - - - - - org.skife.maven - really-executable-jar-maven-plugin - 1.1.0 - - - package - - really-executable-jar - - - - - -Xbootclasspath/p:$0 - - - - - diff --git a/okcurl/src/main/java/com/squareup/okhttp/curl/Main.java b/okcurl/src/main/java/com/squareup/okhttp/curl/Main.java deleted file mode 100644 index 9a45f2073..000000000 --- a/okcurl/src/main/java/com/squareup/okhttp/curl/Main.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (C) 2014 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp.curl; - -import com.google.common.base.Function; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import com.squareup.okhttp.ConnectionPool; -import com.squareup.okhttp.Headers; -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Protocol; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import io.airlift.command.Arguments; -import io.airlift.command.Command; -import io.airlift.command.HelpOption; -import io.airlift.command.Option; -import io.airlift.command.SingleCommand; -import java.io.IOException; -import java.io.InputStream; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.util.Arrays; -import java.util.List; -import java.util.Properties; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import static java.util.concurrent.TimeUnit.SECONDS; - -@Command(name = Main.NAME, description = "A curl for the next-generation web.") -public class Main extends HelpOption implements Runnable { - static final String NAME = "okcurl"; - static final int DEFAULT_TIMEOUT = -1; - - static Main fromArgs(String... args) { - return SingleCommand.singleCommand(Main.class).parse(args); - } - - public static void main(String... args) { - fromArgs(args).run(); - } - - private static String versionString() { - try { - Properties prop = new Properties(); - InputStream in = Main.class.getResourceAsStream("/okcurl-version.properties"); - prop.load(in); - in.close(); - return prop.getProperty("version"); - } catch (IOException e) { - throw new AssertionError("Could not load okcurl-version.properties."); - } - } - - private static String protocols() { - return Joiner.on(", ").join(Lists.transform(Arrays.asList(Protocol.values()), - new Function() { - @Override public String apply(Protocol protocol) { - return protocol.name.utf8(); - } - })); - } - - @Option(name = { "-X", "--request" }, description = "Specify request command to use") - public String method; - - @Option(name = { "-d", "--data" }, description = "HTTP POST data") - public String data; - - @Option(name = { "-H", "--header" }, description = "Custom header to pass to server") - public List headers; - - @Option(name = { "-A", "--user-agent" }, description = "User-Agent to send to server") - public String userAgent = NAME + "/" + versionString(); - - @Option(name = "--connect-timeout", description = "Maximum time allowed for connection (seconds)") - public int connectTimeout = DEFAULT_TIMEOUT; - - @Option(name = "--read-timeout", description = "Maximum time allowed for reading data (seconds)") - public int readTimeout = DEFAULT_TIMEOUT; - - @Option(name = { "-L", "--location" }, description = "Follow redirects") - public boolean followRedirects; - - @Option(name = { "-k", "--insecure" }, - description = "Allow connections to SSL sites without certs") - public boolean allowInsecure; - - @Option(name = { "-i", "--include" }, description = "Include protocol headers in the output") - public boolean showHeaders; - - @Option(name = { "-e", "--referer" }, description = "Referer URL") - public String referer; - - @Option(name = { "-V", "--version" }, description = "Show version number and quit") - public boolean version; - - @Arguments(title = "url", description = "Remote resource URL") - public String url; - - private OkHttpClient client; - - @Override public void run() { - if (showHelpIfRequested()) { - return; - } - if (version) { - System.out.println(NAME + " " + versionString()); - System.out.println("Protocols: " + protocols()); - return; - } - - client = createClient(); - Request request = createRequest(); - try { - Response response = client.execute(request); - if (showHeaders) { - System.out.println(response.statusLine()); - Headers headers = response.headers(); - for (int i = 0, count = headers.size(); i < count; i++) { - System.out.println(headers.name(i) + ": " + headers.value(i)); - } - System.out.println(); - } - - Response.Body body = response.body(); - byte[] buffer = new byte[1024]; - while (body.ready()) { - int c = body.byteStream().read(buffer); - if (c == -1) { - return; - } - System.out.write(buffer, 0, c); - } - body.close(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - close(); - } - } - - private OkHttpClient createClient() { - OkHttpClient client = new OkHttpClient(); - client.setFollowProtocolRedirects(followRedirects); - if (connectTimeout != DEFAULT_TIMEOUT) { - client.setConnectTimeout(connectTimeout, SECONDS); - } - if (readTimeout != DEFAULT_TIMEOUT) { - client.setReadTimeout(readTimeout, SECONDS); - } - if (allowInsecure) { - client.setSslSocketFactory(createInsecureSslSocketFactory()); - } - // If we don't set this reference, there's no way to clean shutdown persistent connections. - client.setConnectionPool(ConnectionPool.getDefault()); - return client; - } - - private String getRequestMethod() { - if (method != null) { - return method; - } - if (data != null) { - return "POST"; - } - return "GET"; - } - - private Request.Body getRequestBody() { - if (data == null) { - return null; - } - String bodyData = data; - - String mimeType = "application/x-form-urlencoded"; - if (headers != null) { - for (String header : headers) { - String[] parts = header.split(":", -1); - if ("Content-Type".equalsIgnoreCase(parts[0])) { - mimeType = parts[1].trim(); - headers.remove(header); - break; - } - } - } - - return Request.Body.create(MediaType.parse(mimeType), bodyData); - } - - Request createRequest() { - Request.Builder request = new Request.Builder(); - - request.url(url); - request.method(getRequestMethod(), getRequestBody()); - - if (headers != null) { - for (String header : headers) { - String[] parts = header.split(":", -1); - request.header(parts[0], parts[1]); - } - } - if (referer != null) { - request.header("Referer", referer); - } - request.header("User-Agent", userAgent); - - return request.build(); - } - - private void close() { - client.getConnectionPool().evictAll(); // Close any persistent connections. - } - - private static SSLSocketFactory createInsecureSslSocketFactory() { - try { - SSLContext context = SSLContext.getInstance("TLS"); - TrustManager permissive = new X509TrustManager() { - @Override public void checkClientTrusted(X509Certificate[] chain, String authType) - throws CertificateException { - } - - @Override public void checkServerTrusted(X509Certificate[] chain, String authType) - throws CertificateException { - } - - @Override public X509Certificate[] getAcceptedIssuers() { - return null; - } - }; - context.init(null, new TrustManager[] { permissive }, null); - return context.getSocketFactory(); - } catch (Exception e) { - throw new AssertionError(e); - } - } -} diff --git a/okcurl/src/main/resources/okcurl-version.properties b/okcurl/src/main/resources/okcurl-version.properties deleted file mode 100644 index defbd4820..000000000 --- a/okcurl/src/main/resources/okcurl-version.properties +++ /dev/null @@ -1 +0,0 @@ -version=${project.version} diff --git a/okcurl/src/test/java/com/squareup/okhttp/curl/MainTest.java b/okcurl/src/test/java/com/squareup/okhttp/curl/MainTest.java deleted file mode 100644 index 6a5b97298..000000000 --- a/okcurl/src/test/java/com/squareup/okhttp/curl/MainTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2014 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp.curl; - -import com.squareup.okhttp.Request; -import java.io.IOException; -import okio.OkBuffer; -import org.junit.Test; - -import static com.squareup.okhttp.curl.Main.fromArgs; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -public class MainTest { - @Test public void simple() { - Request request = fromArgs("http://example.com").createRequest(); - assertEquals("GET", request.method()); - assertEquals("http://example.com", request.urlString()); - assertNull(request.body()); - } - - @Test public void put() { - Request request = fromArgs("-X", "PUT", "http://example.com").createRequest(); - assertEquals("PUT", request.method()); - assertEquals("http://example.com", request.urlString()); - assertNull(request.body()); - } - - @Test public void dataPost() { - Request request = fromArgs("-d", "foo", "http://example.com").createRequest(); - Request.Body body = request.body(); - assertEquals("POST", request.method()); - assertEquals("http://example.com", request.urlString()); - assertEquals("application/x-form-urlencoded; charset=utf-8", body.contentType().toString()); - assertEquals("foo", bodyAsString(body)); - } - - @Test public void dataPut() { - Request request = fromArgs("-d", "foo", "-X", "PUT", "http://example.com").createRequest(); - Request.Body body = request.body(); - assertEquals("PUT", request.method()); - assertEquals("http://example.com", request.urlString()); - assertEquals("application/x-form-urlencoded; charset=utf-8", body.contentType().toString()); - assertEquals("foo", bodyAsString(body)); - } - - @Test public void contentTypeHeader() { - Request request = fromArgs("-d", "foo", "-H", "Content-Type: application/json", - "http://example.com").createRequest(); - Request.Body body = request.body(); - assertEquals("POST", request.method()); - assertEquals("http://example.com", request.urlString()); - assertEquals("application/json; charset=utf-8", body.contentType().toString()); - assertEquals("foo", bodyAsString(body)); - } - - @Test public void referer() { - Request request = fromArgs("-e", "foo", "http://example.com").createRequest(); - assertEquals("GET", request.method()); - assertEquals("http://example.com", request.urlString()); - assertEquals("foo", request.header("Referer")); - assertNull(request.body()); - } - - @Test public void userAgent() { - Request request = fromArgs("-A", "foo", "http://example.com").createRequest(); - assertEquals("GET", request.method()); - assertEquals("http://example.com", request.urlString()); - assertEquals("foo", request.header("User-Agent")); - assertNull(request.body()); - } - - private static String bodyAsString(Request.Body body) { - try { - OkBuffer buffer = new OkBuffer(); - body.writeTo(buffer); - return new String(buffer.readByteString(buffer.size()).toByteArray(), - body.contentType().charset()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/AsyncApiTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/AsyncApiTest.java deleted file mode 100644 index a3dcf5c33..000000000 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/AsyncApiTest.java +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright (C) 2013 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp; - -import com.squareup.okhttp.internal.RecordingHostnameVerifier; -import com.squareup.okhttp.internal.SslContextBuilder; -import com.squareup.okhttp.mockwebserver.Dispatcher; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; -import com.squareup.okhttp.mockwebserver.RecordedRequest; -import com.squareup.okhttp.mockwebserver.SocketPolicy; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.UUID; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicReference; -import javax.net.ssl.SSLContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -public final class AsyncApiTest { - private MockWebServer server = new MockWebServer(); - private OkHttpClient client = new OkHttpClient(); - private RecordingReceiver receiver = new RecordingReceiver(); - - private static final SSLContext sslContext = SslContextBuilder.localhost(); - private HttpResponseCache cache; - - @Before public void setUp() throws Exception { - String tmp = System.getProperty("java.io.tmpdir"); - File cacheDir = new File(tmp, "HttpCache-" + UUID.randomUUID()); - cache = new HttpResponseCache(cacheDir, Integer.MAX_VALUE); - } - - @After public void tearDown() throws Exception { - server.shutdown(); - cache.delete(); - } - - @Test public void get() throws Exception { - server.enqueue(new MockResponse() - .setBody("abc") - .addHeader("Content-Type: text/plain")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .header("User-Agent", "AsyncApiTest") - .build(); - client.enqueue(request, receiver); - - receiver.await(request.url()) - .assertCode(200) - .assertContainsHeaders("Content-Type: text/plain") - .assertBody("abc"); - - assertTrue(server.takeRequest().getHeaders().contains("User-Agent: AsyncApiTest")); - } - - @Test public void connectionPooling() throws Exception { - server.enqueue(new MockResponse().setBody("abc")); - server.enqueue(new MockResponse().setBody("def")); - server.enqueue(new MockResponse().setBody("ghi")); - server.play(); - - client.enqueue(new Request.Builder().url(server.getUrl("/a")).build(), receiver); - receiver.await(server.getUrl("/a")).assertBody("abc"); - - client.enqueue(new Request.Builder().url(server.getUrl("/b")).build(), receiver); - receiver.await(server.getUrl("/b")).assertBody("def"); - - client.enqueue(new Request.Builder().url(server.getUrl("/c")).build(), receiver); - receiver.await(server.getUrl("/c")).assertBody("ghi"); - - assertEquals(0, server.takeRequest().getSequenceNumber()); - assertEquals(1, server.takeRequest().getSequenceNumber()); - assertEquals(2, server.takeRequest().getSequenceNumber()); - } - - @Test public void tls() throws Exception { - server.useHttps(sslContext.getSocketFactory(), false); - server.enqueue(new MockResponse() - .setBody("abc") - .addHeader("Content-Type: text/plain")); - server.play(); - - client.setSslSocketFactory(sslContext.getSocketFactory()); - client.setHostnameVerifier(new RecordingHostnameVerifier()); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .build(); - client.enqueue(request, receiver); - - receiver.await(request.url()).assertHandshake(); - } - - @Test public void recoverFromTlsHandshakeFailure() throws Exception { - server.useHttps(sslContext.getSocketFactory(), false); - server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE)); - server.enqueue(new MockResponse().setBody("abc")); - server.play(); - - client.setSslSocketFactory(sslContext.getSocketFactory()); - client.setHostnameVerifier(new RecordingHostnameVerifier()); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .build(); - client.enqueue(request, receiver); - - receiver.await(request.url()).assertBody("abc"); - } - - @Test public void post() throws Exception { - server.enqueue(new MockResponse().setBody("abc")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .post(Request.Body.create(MediaType.parse("text/plain"), "def")) - .build(); - client.enqueue(request, receiver); - - receiver.await(request.url()) - .assertCode(200) - .assertBody("abc"); - - RecordedRequest recordedRequest = server.takeRequest(); - assertEquals("def", recordedRequest.getUtf8Body()); - assertEquals("3", recordedRequest.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", recordedRequest.getHeader("Content-Type")); - } - - @Test public void cache() throws Exception { - server.enqueue(new MockResponse().setBody("A").addHeader("ETag: v1")); - server.enqueue(new MockResponse().setResponseCode(HttpURLConnection.HTTP_NOT_MODIFIED)); - server.play(); - - client.setOkResponseCache(cache); - - Request request1 = new Request.Builder() - .url(server.getUrl("/")) - .build(); - client.enqueue(request1, receiver); - receiver.await(request1.url()).assertCode(200).assertBody("A"); - assertNull(server.takeRequest().getHeader("If-None-Match")); - - Request request2 = new Request.Builder() - .url(server.getUrl("/")) - .build(); - client.enqueue(request2, receiver); - receiver.await(request2.url()).assertCode(200).assertBody("A"); - assertEquals("v1", server.takeRequest().getHeader("If-None-Match")); - } - - @Test public void redirect() throws Exception { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /b") - .addHeader("Test", "Redirect from /a to /b") - .setBody("/a has moved!")); - server.enqueue(new MockResponse() - .setResponseCode(302) - .addHeader("Location: /c") - .addHeader("Test", "Redirect from /b to /c") - .setBody("/b has moved!")); - server.enqueue(new MockResponse().setBody("C")); - server.play(); - - Request request = new Request.Builder().url(server.getUrl("/a")).build(); - client.enqueue(request, receiver); - - receiver.await(server.getUrl("/c")) - .assertCode(200) - .assertBody("C") - .redirectedBy() - .assertCode(302) - .assertContainsHeaders("Test: Redirect from /b to /c") - .redirectedBy() - .assertCode(301) - .assertContainsHeaders("Test: Redirect from /a to /b"); - - assertEquals(0, server.takeRequest().getSequenceNumber()); // New connection. - assertEquals(1, server.takeRequest().getSequenceNumber()); // Connection reused. - assertEquals(2, server.takeRequest().getSequenceNumber()); // Connection reused again! - } - - @Test public void redirectWithRedirectsDisabled() throws Exception { - client.setFollowProtocolRedirects(false); - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /b") - .addHeader("Test", "Redirect from /a to /b") - .setBody("/a has moved!")); - server.play(); - - Request request = new Request.Builder().url(server.getUrl("/a")).build(); - client.enqueue(request, receiver); - - receiver.await(server.getUrl("/a")) - .assertCode(301) - .assertBody("/a has moved!") - .assertContainsHeaders("Location: /b"); - } - - @Test public void follow20Redirects() throws Exception { - for (int i = 0; i < 20; i++) { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /" + (i + 1)) - .setBody("Redirecting to /" + (i + 1))); - } - server.enqueue(new MockResponse().setBody("Success!")); - server.play(); - - Request request = new Request.Builder().url(server.getUrl("/0")).build(); - client.enqueue(request, receiver); - receiver.await(server.getUrl("/20")) - .assertCode(200) - .assertBody("Success!"); - } - - @Test public void doesNotFollow21Redirects() throws Exception { - for (int i = 0; i < 21; i++) { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /" + (i + 1)) - .setBody("Redirecting to /" + (i + 1))); - } - server.play(); - - Request request = new Request.Builder().url(server.getUrl("/0")).build(); - client.enqueue(request, receiver); - receiver.await(server.getUrl("/20")).assertFailure("Too many redirects: 21"); - } - - @Test public void canceledBeforeResponseReadIsNeverDelivered() throws Exception { - client.getDispatcher().setMaxRequests(1); // Force requests to be executed serially. - server.setDispatcher(new Dispatcher() { - char nextResponse = 'A'; - @Override public MockResponse dispatch(RecordedRequest request) { - client.cancel("request A"); - return new MockResponse().setBody(Character.toString(nextResponse++)); - } - }); - server.play(); - - // Canceling a request after the server has received a request but before - // it has delivered the response. That request will never be received to the - // client. - Request requestA = new Request.Builder().url(server.getUrl("/a")).tag("request A").build(); - client.enqueue(requestA, receiver); - assertEquals("/a", server.takeRequest().getPath()); - - // We then make a second request (not canceled) to make sure the receiver - // has nothing left to wait for. - Request requestB = new Request.Builder().url(server.getUrl("/b")).tag("request B").build(); - client.enqueue(requestB, receiver); - assertEquals("/b", server.takeRequest().getPath()); - receiver.await(requestB.url()).assertBody("B"); - - // At this point we know the receiver is ready: if it hasn't received 'A' - // yet it never will. - receiver.assertNoResponse(requestA.url()); - } - - @Test public void canceledAfterResponseIsDeliveredDoesNothing() throws Exception { - server.enqueue(new MockResponse().setBody("A")); - server.play(); - - final CountDownLatch latch = new CountDownLatch(1); - final AtomicReference bodyRef = new AtomicReference(); - - Request request = new Request.Builder().url(server.getUrl("/a")).tag("request A").build(); - client.enqueue(request, new Response.Receiver() { - @Override public void onFailure(Failure failure) { - throw new AssertionError(); - } - - @Override public boolean onResponse(Response response) throws IOException { - client.cancel("request A"); - bodyRef.set(response.body().string()); - latch.countDown(); - return true; - } - }); - - latch.await(); - assertEquals("A", bodyRef.get()); - } - - @Test public void connectionReuseWhenResponseBodyConsumed() throws Exception { - server.enqueue(new MockResponse().setBody("abc")); - server.enqueue(new MockResponse().setBody("def")); - server.play(); - - Request request = new Request.Builder().url(server.getUrl("/a")).build(); - client.enqueue(request, new Response.Receiver() { - @Override public void onFailure(Failure failure) { - throw new AssertionError(); - } - @Override public boolean onResponse(Response response) throws IOException { - InputStream bytes = response.body().byteStream(); - assertEquals('a', bytes.read()); - assertEquals('b', bytes.read()); - assertEquals('c', bytes.read()); - - // This request will share a connection with 'A' cause it's all done. - client.enqueue(new Request.Builder().url(server.getUrl("/b")).build(), receiver); - return true; - } - }); - - receiver.await(server.getUrl("/b")).assertCode(200).assertBody("def"); - assertEquals(0, server.takeRequest().getSequenceNumber()); // New connection. - assertEquals(1, server.takeRequest().getSequenceNumber()); // Connection reuse! - } - - @Test public void postBodyRetransmittedOnRedirect() throws Exception { - server.enqueue(new MockResponse() - .setResponseCode(302) - .addHeader("Location: /b") - .setBody("Moved to /b !")); - server.enqueue(new MockResponse() - .setBody("This is b.")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .post(Request.Body.create(MediaType.parse("text/plain"), "body!")) - .build(); - client.enqueue(request, receiver); - - receiver.await(server.getUrl("/b")) - .assertCode(200) - .assertBody("This is b."); - - RecordedRequest request1 = server.takeRequest(); - assertEquals("body!", request1.getUtf8Body()); - assertEquals("5", request1.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", request1.getHeader("Content-Type")); - assertEquals(0, request1.getSequenceNumber()); - - RecordedRequest request2 = server.takeRequest(); - assertEquals("body!", request2.getUtf8Body()); - assertEquals("5", request2.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", request2.getHeader("Content-Type")); - assertEquals(1, request2.getSequenceNumber()); - } -} diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java index f25e5a2bd..5943fed13 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java @@ -61,14 +61,14 @@ public final class ConnectionPoolTest { httpServer.play(); httpAddress = new Address(httpServer.getHostName(), httpServer.getPort(), null, null, - HttpAuthenticator.SYSTEM_DEFAULT, null, Protocol.SPDY3_AND_HTTP11); + HttpAuthenticator.SYSTEM_DEFAULT, null, Util.SPDY3_AND_HTTP11); httpSocketAddress = new InetSocketAddress(InetAddress.getByName(httpServer.getHostName()), httpServer.getPort()); spdyServer.play(); spdyAddress = new Address(spdyServer.getHostName(), spdyServer.getPort(), sslContext.getSocketFactory(), new RecordingHostnameVerifier(), - HttpAuthenticator.SYSTEM_DEFAULT, null,Protocol.SPDY3_AND_HTTP11); + HttpAuthenticator.SYSTEM_DEFAULT, null, Util.SPDY3_AND_HTTP11); spdySocketAddress = new InetSocketAddress(InetAddress.getByName(spdyServer.getHostName()), spdyServer.getPort()); diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/DispatcherTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/DispatcherTest.java deleted file mode 100644 index a42362fbf..000000000 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/DispatcherTest.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.squareup.okhttp; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.AbstractExecutorService; -import java.util.concurrent.TimeUnit; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -public final class DispatcherTest { - RecordingExecutor executor = new RecordingExecutor(); - RecordingReceiver receiver = new RecordingReceiver(); - Dispatcher dispatcher = new Dispatcher(executor); - OkHttpClient client = new OkHttpClient().setDispatcher(dispatcher); - - @Before public void setUp() throws Exception { - dispatcher.setMaxRequests(20); - dispatcher.setMaxRequestsPerHost(10); - } - - @Test public void maxRequestsZero() throws Exception { - try { - dispatcher.setMaxRequests(0); - fail(); - } catch (IllegalArgumentException expected) { - } - } - - @Test public void maxPerHostZero() throws Exception { - try { - dispatcher.setMaxRequestsPerHost(0); - fail(); - } catch (IllegalArgumentException expected) { - } - } - - @Test public void enqueuedJobsRunImmediately() throws Exception { - client.enqueue(newRequest("http://a/1"), receiver); - executor.assertJobs("http://a/1"); - } - - @Test public void maxRequestsEnforced() throws Exception { - dispatcher.setMaxRequests(3); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - client.enqueue(newRequest("http://b/1"), receiver); - client.enqueue(newRequest("http://b/2"), receiver); - executor.assertJobs("http://a/1", "http://a/2", "http://b/1"); - } - - @Test public void maxPerHostEnforced() throws Exception { - dispatcher.setMaxRequestsPerHost(2); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - client.enqueue(newRequest("http://a/3"), receiver); - executor.assertJobs("http://a/1", "http://a/2"); - } - - @Test public void increasingMaxRequestsPromotesJobsImmediately() throws Exception { - dispatcher.setMaxRequests(2); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://b/1"), receiver); - client.enqueue(newRequest("http://c/1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - client.enqueue(newRequest("http://b/2"), receiver); - dispatcher.setMaxRequests(4); - executor.assertJobs("http://a/1", "http://b/1", "http://c/1", "http://a/2"); - } - - @Test public void increasingMaxPerHostPromotesJobsImmediately() throws Exception { - dispatcher.setMaxRequestsPerHost(2); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - client.enqueue(newRequest("http://a/3"), receiver); - client.enqueue(newRequest("http://a/4"), receiver); - client.enqueue(newRequest("http://a/5"), receiver); - dispatcher.setMaxRequestsPerHost(4); - executor.assertJobs("http://a/1", "http://a/2", "http://a/3", "http://a/4"); - } - - @Test public void oldJobFinishesNewJobCanRunDifferentHost() throws Exception { - dispatcher.setMaxRequests(1); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://b/1"), receiver); - executor.finishJob("http://a/1"); - executor.assertJobs("http://b/1"); - } - - @Test public void oldJobFinishesNewJobWithSameHostStarts() throws Exception { - dispatcher.setMaxRequests(2); - dispatcher.setMaxRequestsPerHost(1); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://b/1"), receiver); - client.enqueue(newRequest("http://b/2"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - executor.finishJob("http://a/1"); - executor.assertJobs("http://b/1", "http://a/2"); - } - - @Test public void oldJobFinishesNewJobCantRunDueToHostLimit() throws Exception { - dispatcher.setMaxRequestsPerHost(1); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://b/1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - executor.finishJob("http://b/1"); - executor.assertJobs("http://a/1"); - } - - @Test public void cancelingReadyJobPreventsItFromStarting() throws Exception { - dispatcher.setMaxRequestsPerHost(1); - client.enqueue(newRequest("http://a/1"), receiver); - client.enqueue(newRequest("http://a/2", "tag1"), receiver); - dispatcher.cancel("tag1"); - executor.finishJob("http://a/1"); - executor.assertJobs(); - } - - @Test public void cancelingRunningJobTakesNoEffectUntilJobFinishes() throws Exception { - dispatcher.setMaxRequests(1); - client.enqueue(newRequest("http://a/1", "tag1"), receiver); - client.enqueue(newRequest("http://a/2"), receiver); - dispatcher.cancel("tag1"); - executor.assertJobs("http://a/1"); - executor.finishJob("http://a/1"); - executor.assertJobs("http://a/2"); - } - - class RecordingExecutor extends AbstractExecutorService { - private List jobs = new ArrayList(); - - @Override public void execute(Runnable command) { - jobs.add((Job) command); - } - - public void assertJobs(String... expectedUrls) { - List actualUrls = new ArrayList(); - for (Job job : jobs) { - actualUrls.add(job.request().urlString()); - } - assertEquals(Arrays.asList(expectedUrls), actualUrls); - } - - public void finishJob(String url) { - for (Iterator i = jobs.iterator(); i.hasNext(); ) { - Job job = i.next(); - if (job.request().urlString().equals(url)) { - i.remove(); - dispatcher.finished(job); - return; - } - } - throw new AssertionError("No such job: " + url); - } - - @Override public void shutdown() { - throw new UnsupportedOperationException(); - } - - @Override public List shutdownNow() { - throw new UnsupportedOperationException(); - } - - @Override public boolean isShutdown() { - throw new UnsupportedOperationException(); - } - - @Override public boolean isTerminated() { - throw new UnsupportedOperationException(); - } - - @Override public boolean awaitTermination(long timeout, TimeUnit unit) - throws InterruptedException { - throw new UnsupportedOperationException(); - } - } - - private Request newRequest(String url) { - return new Request.Builder().url(url).build(); - } - - private Request newRequest(String url, String tag) { - return new Request.Builder().url(url).tag(tag).build(); - } -} diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/RecordedResponse.java b/okhttp-tests/src/test/java/com/squareup/okhttp/RecordedResponse.java index 6628331a9..43bfd3509 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/RecordedResponse.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/RecordedResponse.java @@ -15,6 +15,10 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.http.Failure; +import com.squareup.okhttp.internal.http.Headers; +import com.squareup.okhttp.internal.http.Request; +import com.squareup.okhttp.internal.http.Response; import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/RecordingReceiver.java b/okhttp-tests/src/test/java/com/squareup/okhttp/RecordingReceiver.java index f5b54eede..353025e31 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/RecordingReceiver.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/RecordingReceiver.java @@ -15,6 +15,8 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.http.Failure; +import com.squareup.okhttp.internal.http.Response; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URL; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java index 08f304e3a..4b4c0f8db 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java @@ -16,10 +16,11 @@ package com.squareup.okhttp; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.http.Request; +import com.squareup.okhttp.internal.okio.OkBuffer; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import okio.OkBuffer; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/SyncApiTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/SyncApiTest.java deleted file mode 100644 index ae3c7434f..000000000 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/SyncApiTest.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (C) 2014 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp; - -import com.squareup.okhttp.internal.RecordingHostnameVerifier; -import com.squareup.okhttp.internal.SslContextBuilder; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; -import com.squareup.okhttp.mockwebserver.RecordedRequest; -import com.squareup.okhttp.mockwebserver.SocketPolicy; -import java.io.File; -import java.io.IOException; -import java.net.HttpURLConnection; -import java.util.UUID; -import javax.net.ssl.SSLContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -public final class SyncApiTest { - private MockWebServer server = new MockWebServer(); - private OkHttpClient client = new OkHttpClient(); - - private static final SSLContext sslContext = SslContextBuilder.localhost(); - private HttpResponseCache cache; - - @Before public void setUp() throws Exception { - String tmp = System.getProperty("java.io.tmpdir"); - File cacheDir = new File(tmp, "HttpCache-" + UUID.randomUUID()); - cache = new HttpResponseCache(cacheDir, Integer.MAX_VALUE); - } - - @After public void tearDown() throws Exception { - server.shutdown(); - cache.delete(); - } - - @Test public void get() throws Exception { - server.enqueue(new MockResponse() - .setBody("abc") - .addHeader("Content-Type: text/plain")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .header("User-Agent", "SyncApiTest") - .build(); - - onSuccess(request) - .assertCode(200) - .assertContainsHeaders("Content-Type: text/plain") - .assertBody("abc"); - - assertTrue(server.takeRequest().getHeaders().contains("User-Agent: SyncApiTest")); - } - - @Test public void connectionPooling() throws Exception { - server.enqueue(new MockResponse().setBody("abc")); - server.enqueue(new MockResponse().setBody("def")); - server.enqueue(new MockResponse().setBody("ghi")); - server.play(); - - onSuccess(new Request.Builder().url(server.getUrl("/a")).build()) - .assertBody("abc"); - - onSuccess(new Request.Builder().url(server.getUrl("/b")).build()) - .assertBody("def"); - - onSuccess(new Request.Builder().url(server.getUrl("/c")).build()) - .assertBody("ghi"); - - assertEquals(0, server.takeRequest().getSequenceNumber()); - assertEquals(1, server.takeRequest().getSequenceNumber()); - assertEquals(2, server.takeRequest().getSequenceNumber()); - } - - @Test public void tls() throws Exception { - server.useHttps(sslContext.getSocketFactory(), false); - server.enqueue(new MockResponse() - .setBody("abc") - .addHeader("Content-Type: text/plain")); - server.play(); - - client.setSslSocketFactory(sslContext.getSocketFactory()); - client.setHostnameVerifier(new RecordingHostnameVerifier()); - - onSuccess(new Request.Builder().url(server.getUrl("/")).build()) - .assertHandshake(); - } - - @Test public void recoverFromTlsHandshakeFailure() throws Exception { - server.useHttps(sslContext.getSocketFactory(), false); - server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE)); - server.enqueue(new MockResponse().setBody("abc")); - server.play(); - - client.setSslSocketFactory(sslContext.getSocketFactory()); - client.setHostnameVerifier(new RecordingHostnameVerifier()); - - onSuccess(new Request.Builder().url(server.getUrl("/")).build()) - .assertBody("abc"); - } - - @Test public void post() throws Exception { - server.enqueue(new MockResponse().setBody("abc")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .post(Request.Body.create(MediaType.parse("text/plain"), "def")) - .build(); - - onSuccess(request) - .assertCode(200) - .assertBody("abc"); - - RecordedRequest recordedRequest = server.takeRequest(); - assertEquals("def", recordedRequest.getUtf8Body()); - assertEquals("3", recordedRequest.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", recordedRequest.getHeader("Content-Type")); - } - - @Test public void cache() throws Exception { - server.enqueue(new MockResponse().setBody("A").addHeader("ETag: v1")); - server.enqueue(new MockResponse().setResponseCode(HttpURLConnection.HTTP_NOT_MODIFIED)); - server.play(); - - client.setOkResponseCache(cache); - - onSuccess(new Request.Builder().url(server.getUrl("/")).build()) - .assertCode(200).assertBody("A"); - assertNull(server.takeRequest().getHeader("If-None-Match")); - - onSuccess(new Request.Builder().url(server.getUrl("/")).build()) - .assertCode(200).assertBody("A"); - assertEquals("v1", server.takeRequest().getHeader("If-None-Match")); - } - - @Test public void redirect() throws Exception { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /b") - .addHeader("Test", "Redirect from /a to /b") - .setBody("/a has moved!")); - server.enqueue(new MockResponse() - .setResponseCode(302) - .addHeader("Location: /c") - .addHeader("Test", "Redirect from /b to /c") - .setBody("/b has moved!")); - server.enqueue(new MockResponse().setBody("C")); - server.play(); - - onSuccess(new Request.Builder().url(server.getUrl("/a")).build()) - .assertCode(200) - .assertBody("C") - .redirectedBy() - .assertCode(302) - .assertContainsHeaders("Test: Redirect from /b to /c") - .redirectedBy() - .assertCode(301) - .assertContainsHeaders("Test: Redirect from /a to /b"); - - assertEquals(0, server.takeRequest().getSequenceNumber()); // New connection. - assertEquals(1, server.takeRequest().getSequenceNumber()); // Connection reused. - assertEquals(2, server.takeRequest().getSequenceNumber()); // Connection reused again! - } - - @Test public void redirectWithRedirectsDisabled() throws Exception { - client.setFollowProtocolRedirects(false); - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /b") - .addHeader("Test", "Redirect from /a to /b") - .setBody("/a has moved!")); - server.play(); - - onSuccess(new Request.Builder().url(server.getUrl("/a")).build()) - .assertCode(301) - .assertBody("/a has moved!") - .assertContainsHeaders("Location: /b"); - } - - @Test public void follow20Redirects() throws Exception { - for (int i = 0; i < 20; i++) { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /" + (i + 1)) - .setBody("Redirecting to /" + (i + 1))); - } - server.enqueue(new MockResponse().setBody("Success!")); - server.play(); - - onSuccess(new Request.Builder().url(server.getUrl("/0")).build()) - .assertCode(200) - .assertBody("Success!"); - } - - @Test public void doesNotFollow21Redirects() throws Exception { - for (int i = 0; i < 21; i++) { - server.enqueue(new MockResponse() - .setResponseCode(301) - .addHeader("Location: /" + (i + 1)) - .setBody("Redirecting to /" + (i + 1))); - } - server.play(); - - try { - client.execute(new Request.Builder().url(server.getUrl("/0")).build()); - fail(); - } catch (IOException e) { - assertEquals("Too many redirects: 21", e.getMessage()); - } - } - - @Test public void postBodyRetransmittedOnRedirect() throws Exception { - server.enqueue(new MockResponse() - .setResponseCode(302) - .addHeader("Location: /b") - .setBody("Moved to /b !")); - server.enqueue(new MockResponse() - .setBody("This is b.")); - server.play(); - - Request request = new Request.Builder() - .url(server.getUrl("/")) - .post(Request.Body.create(MediaType.parse("text/plain"), "body!")) - .build(); - - onSuccess(request) - .assertCode(200) - .assertBody("This is b."); - - RecordedRequest request1 = server.takeRequest(); - assertEquals("body!", request1.getUtf8Body()); - assertEquals("5", request1.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", request1.getHeader("Content-Type")); - assertEquals(0, request1.getSequenceNumber()); - - RecordedRequest request2 = server.takeRequest(); - assertEquals("body!", request2.getUtf8Body()); - assertEquals("5", request2.getHeader("Content-Length")); - assertEquals("text/plain; charset=utf-8", request2.getHeader("Content-Type")); - assertEquals(1, request2.getSequenceNumber()); - } - - private RecordedResponse onSuccess(Request request) throws IOException { - Response response = client.execute(request); - return new RecordedResponse(request, response, response.body().string(), null); - } -} diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/CookiesTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/CookiesTest.java index a44e6839f..d0ed0ae4b 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/CookiesTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/CookiesTest.java @@ -20,11 +20,6 @@ import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; import com.squareup.okhttp.mockwebserver.RecordedRequest; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - import java.io.IOException; import java.net.CookieHandler; import java.net.CookieManager; @@ -37,6 +32,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import static java.net.CookiePolicy.ACCEPT_ORIGINAL_SERVER; import static org.junit.Assert.assertEquals; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalHttp2Example.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalHttp2Example.java index 1c5198c69..51c73696e 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalHttp2Example.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalHttp2Example.java @@ -17,7 +17,7 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Protocol; +import com.squareup.okhttp.internal.Util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; @@ -32,7 +32,7 @@ public final class ExternalHttp2Example { public static void main(String[] args) throws Exception { URL url = new URL("https://http2.iijplus.jp/push/test1"); HttpsURLConnection connection = (HttpsURLConnection) new OkHttpClient() - .setProtocols(Protocol.HTTP2_AND_HTTP_11).open(url); + .setProtocols(Util.HTTP2_AND_HTTP_11).open(url); connection.setHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalSpdyExample.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalSpdyExample.java index dab90c138..32ab6b44f 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalSpdyExample.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ExternalSpdyExample.java @@ -17,7 +17,7 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Protocol; +import com.squareup.okhttp.internal.Util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; @@ -32,7 +32,7 @@ public final class ExternalSpdyExample { public static void main(String[] args) throws Exception { URL url = new URL("https://www.google.ca/"); HttpsURLConnection connection = (HttpsURLConnection) new OkHttpClient() - .setProtocols(Protocol.SPDY3_AND_HTTP11).open(url); + .setProtocols(Util.SPDY3_AND_HTTP11).open(url); connection.setHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java index 80db74704..dba194c34 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java @@ -15,10 +15,7 @@ */ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.Protocol; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.internal.spdy.Header; import java.io.IOException; import java.util.List; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HttpResponseCacheTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HttpResponseCacheTest.java index 1380ff045..a4b658309 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HttpResponseCacheTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HttpResponseCacheTest.java @@ -19,8 +19,6 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.HttpResponseCache; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.OkResponseCache; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseSource; import com.squareup.okhttp.internal.SslContextBuilder; import com.squareup.okhttp.internal.Util; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ResponseCacheAdapterTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ResponseCacheAdapterTest.java index 9b880ef58..96728c41a 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ResponseCacheAdapterTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/ResponseCacheAdapterTest.java @@ -20,11 +20,6 @@ import com.squareup.okhttp.internal.SslContextBuilder; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; import com.squareup.okhttp.mockwebserver.RecordedRequest; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - import java.io.IOException; import java.net.CacheRequest; import java.net.CacheResponse; @@ -40,11 +35,13 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; - import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; diff --git a/okio/src/test/java/okio/ByteStringTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ByteStringTest.java similarity index 99% rename from okio/src/test/java/okio/ByteStringTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ByteStringTest.java index e71405663..c67808ed1 100644 --- a/okio/src/test/java/okio/ByteStringTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ByteStringTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/okio/src/test/java/okio/DeflaterSinkTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/DeflaterSinkTest.java similarity index 98% rename from okio/src/test/java/okio/DeflaterSinkTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/DeflaterSinkTest.java index 025215b06..93e46424a 100644 --- a/okio/src/test/java/okio/DeflaterSinkTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/DeflaterSinkTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.InputStream; diff --git a/okio/src/test/java/okio/GzipSourceTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/GzipSourceTest.java similarity index 98% rename from okio/src/test/java/okio/GzipSourceTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/GzipSourceTest.java index f14b99963..08cb655c9 100644 --- a/okio/src/test/java/okio/GzipSourceTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/GzipSourceTest.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.util.zip.CRC32; import org.junit.Test; -import static okio.Util.UTF_8; +import static com.squareup.okhttp.internal.okio.Util.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; diff --git a/okio/src/test/java/okio/InflaterSourceTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/InflaterSourceTest.java similarity index 99% rename from okio/src/test/java/okio/InflaterSourceTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/InflaterSourceTest.java index e6f2bc653..6d05c7c17 100644 --- a/okio/src/test/java/okio/InflaterSourceTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/InflaterSourceTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; diff --git a/okio/src/test/java/okio/OkBufferReadUtf8LineTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferReadUtf8LineTest.java similarity index 94% rename from okio/src/test/java/okio/OkBufferReadUtf8LineTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferReadUtf8LineTest.java index ac3de728e..6d1843924 100644 --- a/okio/src/test/java/okio/OkBufferReadUtf8LineTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferReadUtf8LineTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; public final class OkBufferReadUtf8LineTest extends ReadUtf8LineTest { @Override protected BufferedSource newSource(String s) { diff --git a/okio/src/test/java/okio/OkBufferTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferTest.java similarity index 99% rename from okio/src/test/java/okio/OkBufferTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferTest.java index e4ba27714..3a6b3f3bc 100644 --- a/okio/src/test/java/okio/OkBufferTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkBufferTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.util.Arrays; import java.util.List; diff --git a/okio/src/test/java/okio/OkioTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkioTest.java similarity index 96% rename from okio/src/test/java/okio/OkioTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkioTest.java index e56979fe4..265992477 100644 --- a/okio/src/test/java/okio/OkioTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/OkioTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -21,7 +21,7 @@ import java.io.InputStream; import java.util.Arrays; import org.junit.Test; -import static okio.Util.UTF_8; +import static com.squareup.okhttp.internal.okio.Util.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; diff --git a/okio/src/test/java/okio/ReadUtf8LineTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ReadUtf8LineTest.java similarity index 98% rename from okio/src/test/java/okio/ReadUtf8LineTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ReadUtf8LineTest.java index db36a7939..4b697cd1b 100644 --- a/okio/src/test/java/okio/ReadUtf8LineTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/ReadUtf8LineTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; diff --git a/okio/src/test/java/okio/RealBufferedSinkTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSinkTest.java similarity index 98% rename from okio/src/test/java/okio/RealBufferedSinkTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSinkTest.java index 67d3a803d..a87155353 100644 --- a/okio/src/test/java/okio/RealBufferedSinkTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSinkTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.OutputStream; @@ -24,7 +24,7 @@ import java.util.List; import java.util.Map; import org.junit.Test; -import static okio.Util.UTF_8; +import static com.squareup.okhttp.internal.okio.Util.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; diff --git a/okio/src/test/java/okio/RealBufferedSourceReadUtf8LineTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceReadUtf8LineTest.java similarity index 96% rename from okio/src/test/java/okio/RealBufferedSourceReadUtf8LineTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceReadUtf8LineTest.java index 8793640b1..115cc9875 100644 --- a/okio/src/test/java/okio/RealBufferedSourceReadUtf8LineTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceReadUtf8LineTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; diff --git a/okio/src/test/java/okio/RealBufferedSourceTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceTest.java similarity index 98% rename from okio/src/test/java/okio/RealBufferedSourceTest.java rename to okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceTest.java index c191e1c72..fd0c5ae57 100644 --- a/okio/src/test/java/okio/RealBufferedSourceTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/okio/RealBufferedSourceTest.java @@ -13,16 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.util.Arrays; import org.junit.Test; -import static okio.Util.UTF_8; +import static com.squareup.okhttp.internal.okio.Util.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/BaseTestHandler.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/BaseTestHandler.java index 8f709220e..bf5c35d1d 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/BaseTestHandler.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/BaseTestHandler.java @@ -15,10 +15,10 @@ */ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; import java.io.IOException; import java.util.List; -import okio.BufferedSource; -import okio.ByteString; import static org.junit.Assert.fail; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/HpackDraft05Test.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/HpackDraft05Test.java index d86db867c..3bfc344c4 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/HpackDraft05Test.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/HpackDraft05Test.java @@ -15,11 +15,11 @@ */ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; import java.io.IOException; import java.util.Arrays; import java.util.List; -import okio.ByteString; -import okio.OkBuffer; import org.junit.Before; import org.junit.Test; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Http20Draft09Test.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Http20Draft09Test.java index 248ea094c..fb37b231d 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Http20Draft09Test.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Http20Draft09Test.java @@ -16,12 +16,12 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; import java.io.IOException; import java.util.Arrays; import java.util.List; -import okio.BufferedSource; -import okio.ByteString; -import okio.OkBuffer; import org.junit.Test; import static com.squareup.okhttp.internal.Util.headerEntries; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java index a44af612f..8cd76f80c 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java @@ -17,6 +17,10 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; @@ -30,10 +34,6 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; -import okio.BufferedSource; -import okio.ByteString; -import okio.OkBuffer; -import okio.Okio; /** Replays prerecorded outgoing frames and records incoming frames. */ public final class MockSpdyPeer implements Closeable { diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Spdy3Test.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Spdy3Test.java index 1904b908f..12abda4a1 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Spdy3Test.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/Spdy3Test.java @@ -16,9 +16,9 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; import java.io.IOException; -import okio.ByteString; -import okio.OkBuffer; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java index fbfb2f5ba..cea23071e 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java @@ -16,6 +16,12 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.io.InterruptedIOException; import java.util.ArrayList; @@ -23,12 +29,6 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.ByteString; -import okio.OkBuffer; -import okio.Okio; -import okio.Source; import org.junit.After; import org.junit.Test; diff --git a/okhttp/pom.xml b/okhttp/pom.xml index 25e165f11..3a8e15f2e 100644 --- a/okhttp/pom.xml +++ b/okhttp/pom.xml @@ -23,6 +23,12 @@ okhttp-protocols ${project.version} + + org.codehaus.mojo + animal-sniffer-annotations + 1.10 + true + diff --git a/okhttp/src/main/java/com/squareup/okhttp/CacheControl.java b/okhttp/src/main/java/com/squareup/okhttp/CacheControl.java index dc944e4f6..3d1fcfa31 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/CacheControl.java +++ b/okhttp/src/main/java/com/squareup/okhttp/CacheControl.java @@ -1,6 +1,7 @@ package com.squareup.okhttp; import com.squareup.okhttp.internal.http.HeaderParser; +import com.squareup.okhttp.internal.http.Headers; /** * A Cache-Control header with cache directives from a server or client. These diff --git a/okhttp/src/main/java/com/squareup/okhttp/Connection.java b/okhttp/src/main/java/com/squareup/okhttp/Connection.java index d9115a966..843eb670c 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Connection.java +++ b/okhttp/src/main/java/com/squareup/okhttp/Connection.java @@ -17,11 +17,18 @@ package com.squareup.okhttp; import com.squareup.okhttp.internal.Platform; +import com.squareup.okhttp.internal.Util; import com.squareup.okhttp.internal.http.HttpAuthenticator; import com.squareup.okhttp.internal.http.HttpConnection; import com.squareup.okhttp.internal.http.HttpEngine; import com.squareup.okhttp.internal.http.HttpTransport; +import com.squareup.okhttp.internal.http.Request; +import com.squareup.okhttp.internal.http.Response; import com.squareup.okhttp.internal.http.SpdyTransport; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Okio; import com.squareup.okhttp.internal.spdy.SpdyConnection; import java.io.Closeable; import java.io.IOException; @@ -31,10 +38,6 @@ import java.net.Proxy; import java.net.Socket; import java.net.SocketTimeoutException; import javax.net.ssl.SSLSocket; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.ByteString; -import okio.Okio; import static java.net.HttpURLConnection.HTTP_OK; import static java.net.HttpURLConnection.HTTP_PROXY_AUTH; @@ -136,11 +139,11 @@ public final class Connection implements Closeable { if (useNpn) { if (route.address.protocols.contains(Protocol.HTTP_2) // Contains both spdy variants. && route.address.protocols.contains(Protocol.SPDY_3)) { - platform.setNpnProtocols(sslSocket, Protocol.HTTP2_SPDY3_AND_HTTP); + platform.setNpnProtocols(sslSocket, Util.HTTP2_SPDY3_AND_HTTP); } else if (route.address.protocols.contains(Protocol.HTTP_2)) { - platform.setNpnProtocols(sslSocket, Protocol.HTTP2_AND_HTTP_11); + platform.setNpnProtocols(sslSocket, Util.HTTP2_AND_HTTP_11); } else { - platform.setNpnProtocols(sslSocket, Protocol.SPDY3_AND_HTTP11); + platform.setNpnProtocols(sslSocket, Util.SPDY3_AND_HTTP11); } } @@ -160,7 +163,7 @@ public final class Connection implements Closeable { ByteString maybeProtocol; Protocol selectedProtocol = Protocol.HTTP_11; if (useNpn && (maybeProtocol = platform.getNpnSelectedProtocol(sslSocket)) != null) { - selectedProtocol = Protocol.find(maybeProtocol); // Throws IOE on unknown. + selectedProtocol = Util.getProtocol(maybeProtocol); // Throws IOE on unknown. } if (selectedProtocol.spdyVariant) { diff --git a/okhttp/src/main/java/com/squareup/okhttp/Dispatcher.java b/okhttp/src/main/java/com/squareup/okhttp/Dispatcher.java deleted file mode 100644 index 58e06be40..000000000 --- a/okhttp/src/main/java/com/squareup/okhttp/Dispatcher.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (C) 2013 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp; - -import com.squareup.okhttp.internal.Util; -import java.util.ArrayDeque; -import java.util.Deque; -import java.util.Iterator; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * Policy on when async requests are executed. - * - *

Each dispatcher uses an {@link ExecutorService} to run jobs internally. If you - * supply your own executor, it should be able to run {@link #getMaxRequests the - * configured maximum} number of jobs concurrently. - */ -public final class Dispatcher { - private int maxRequests = 64; - private int maxRequestsPerHost = 5; - - /** Executes jobs. Created lazily. */ - private ExecutorService executorService; - - /** Ready jobs in the order they'll be run. */ - private final Deque readyJobs = new ArrayDeque(); - - /** Running jobs. Includes canceled jobs that haven't finished yet. */ - private final Deque runningJobs = new ArrayDeque(); - - public Dispatcher(ExecutorService executorService) { - this.executorService = executorService; - } - - public Dispatcher() { - } - - public synchronized ExecutorService getExecutorService() { - if (executorService == null) { - executorService = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60, TimeUnit.SECONDS, - new LinkedBlockingQueue(), Util.threadFactory("OkHttp Dispatcher", false)); - } - return executorService; - } - - /** - * Set the maximum number of requests to execute concurrently. Above this - * requests queue in memory, waiting for the running jobs to complete. - * - *

If more than {@code maxRequests} requests are in flight when this is - * invoked, those requests will remain in flight. - */ - public synchronized void setMaxRequests(int maxRequests) { - if (maxRequests < 1) { - throw new IllegalArgumentException("max < 1: " + maxRequests); - } - this.maxRequests = maxRequests; - promoteJobs(); - } - - public synchronized int getMaxRequests() { - return maxRequests; - } - - /** - * Set the maximum number of requests for each host to execute concurrently. - * This limits requests by the URL's host name. Note that concurrent requests - * to a single IP address may still exceed this limit: multiple hostnames may - * share an IP address or be routed through the same HTTP proxy. - * - *

If more than {@code maxRequestsPerHost} requests are in flight when this - * is invoked, those requests will remain in flight. - */ - public synchronized void setMaxRequestsPerHost(int maxRequestsPerHost) { - if (maxRequestsPerHost < 1) { - throw new IllegalArgumentException("max < 1: " + maxRequestsPerHost); - } - this.maxRequestsPerHost = maxRequestsPerHost; - promoteJobs(); - } - - public synchronized int getMaxRequestsPerHost() { - return maxRequestsPerHost; - } - - synchronized void enqueue(OkHttpClient client, Request request, Response.Receiver receiver) { - // Copy the client. Otherwise changes (socket factory, redirect policy, - // etc.) may incorrectly be reflected in the request when it is executed. - client = client.copyWithDefaults(); - Job job = new Job(this, client, request, receiver); - - if (runningJobs.size() < maxRequests && runningJobsForHost(job) < maxRequestsPerHost) { - runningJobs.add(job); - getExecutorService().execute(job); - } else { - readyJobs.add(job); - } - } - - /** - * Cancel all jobs with the tag {@code tag}. If a canceled job is running it - * may continue running until it reaches a safe point to finish. - */ - public synchronized void cancel(Object tag) { - for (Iterator i = readyJobs.iterator(); i.hasNext(); ) { - if (Util.equal(tag, i.next().tag())) i.remove(); - } - - for (Job job : runningJobs) { - if (Util.equal(tag, job.tag())) job.canceled = true; - } - } - - /** Used by {@code Job#run} to signal completion. */ - synchronized void finished(Job job) { - if (!runningJobs.remove(job)) throw new AssertionError("Job wasn't running!"); - promoteJobs(); - } - - private void promoteJobs() { - if (runningJobs.size() >= maxRequests) return; // Already running max capacity. - if (readyJobs.isEmpty()) return; // No ready jobs to promote. - - for (Iterator i = readyJobs.iterator(); i.hasNext(); ) { - Job job = i.next(); - - if (runningJobsForHost(job) < maxRequestsPerHost) { - i.remove(); - runningJobs.add(job); - getExecutorService().execute(job); - } - - if (runningJobs.size() >= maxRequests) return; // Reached max capacity. - } - } - - /** Returns the number of running jobs that share a host with {@code job}. */ - private int runningJobsForHost(Job job) { - int result = 0; - for (Job j : runningJobs) { - if (j.host().equals(job.host())) result++; - } - return result; - } -} diff --git a/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java b/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java index ad0a22917..892e82ed0 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java +++ b/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java @@ -18,7 +18,13 @@ package com.squareup.okhttp; import com.squareup.okhttp.internal.DiskLruCache; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.http.Headers; import com.squareup.okhttp.internal.http.HttpMethod; +import com.squareup.okhttp.internal.http.Request; +import com.squareup.okhttp.internal.http.Response; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Okio; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.File; @@ -42,9 +48,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; -import okio.BufferedSource; -import okio.ByteString; -import okio.Okio; import static com.squareup.okhttp.internal.Util.UTF_8; diff --git a/okhttp/src/main/java/com/squareup/okhttp/Job.java b/okhttp/src/main/java/com/squareup/okhttp/Job.java deleted file mode 100644 index 54dff42c8..000000000 --- a/okhttp/src/main/java/com/squareup/okhttp/Job.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (C) 2013 Square, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.squareup.okhttp; - -import com.squareup.okhttp.internal.NamedRunnable; -import com.squareup.okhttp.internal.http.HttpAuthenticator; -import com.squareup.okhttp.internal.http.HttpEngine; -import com.squareup.okhttp.internal.http.HttpURLConnectionImpl; -import com.squareup.okhttp.internal.http.OkHeaders; -import java.io.IOException; -import java.io.InputStream; -import java.net.ProtocolException; -import java.net.Proxy; -import java.net.URL; -import okio.BufferedSink; -import okio.Okio; -import okio.Source; - -import static com.squareup.okhttp.internal.Util.getEffectivePort; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_MOVED_PERM; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_MOVED_TEMP; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_MULT_CHOICE; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_PROXY_AUTH; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_SEE_OTHER; -import static com.squareup.okhttp.internal.http.HttpURLConnectionImpl.HTTP_UNAUTHORIZED; -import static com.squareup.okhttp.internal.http.StatusLine.HTTP_TEMP_REDIRECT; - -final class Job extends NamedRunnable { - private final Dispatcher dispatcher; - private final OkHttpClient client; - private final Response.Receiver responseReceiver; - private int redirectionCount; - - volatile boolean canceled; - - /** The request; possibly a consequence of redirects or auth headers. */ - private Request request; - HttpEngine engine; - - public Job(Dispatcher dispatcher, OkHttpClient client, Request request, - Response.Receiver responseReceiver) { - super("OkHttp %s", request.urlString()); - this.dispatcher = dispatcher; - this.client = client; - this.request = request; - this.responseReceiver = responseReceiver; - } - - String host() { - return request.url().getHost(); - } - - Request request() { - return request; - } - - Object tag() { - return request.tag(); - } - - @Override protected void execute() { - try { - Response response = getResponse(); - if (response != null && !canceled) { - responseReceiver.onResponse(response); - } - } catch (IOException e) { - responseReceiver.onFailure(new Failure.Builder() - .request(request) - .exception(e) - .build()); - } finally { - engine.close(); // Close the connection if it isn't already. - dispatcher.finished(this); - } - } - - /** - * Performs the request and returns the response. May return null if this job - * was canceled. - */ - Response getResponse() throws IOException { - Response redirectedBy = null; - - // Copy body metadata to the appropriate request headers. - Request.Body body = request.body(); - if (body != null) { - MediaType contentType = body.contentType(); - if (contentType == null) throw new IllegalStateException("contentType == null"); - - Request.Builder requestBuilder = request.newBuilder(); - requestBuilder.header("Content-Type", contentType.toString()); - - long contentLength = body.contentLength(); - if (contentLength != -1) { - requestBuilder.header("Content-Length", Long.toString(contentLength)); - requestBuilder.removeHeader("Transfer-Encoding"); - } else { - requestBuilder.header("Transfer-Encoding", "chunked"); - requestBuilder.removeHeader("Content-Length"); - } - - request = requestBuilder.build(); - } - - // Create the initial HTTP engine. Retries and redirects need new engine for each attempt. - engine = new HttpEngine(client, request, false, null, null, null); - - while (true) { - if (canceled) return null; - - try { - engine.sendRequest(); - - if (body != null) { - BufferedSink sink = Okio.buffer(engine.getRequestBody()); - body.writeTo(sink); - sink.flush(); - } - - engine.readResponse(); - } catch (IOException e) { - HttpEngine retryEngine = engine.recover(e); - if (retryEngine != null) { - engine = retryEngine; - continue; - } - - // Give up; recovery is not possible. - throw e; - } - - Response response = engine.getResponse(); - Request redirect = processResponse(engine, response); - - if (redirect == null) { - engine.releaseConnection(); - return response.newBuilder() - // Cache body includes original content-length and content-type data. - .body(engine.responseSource().usesCache() - ? engine.getResponse().body() - : new RealResponseBody(response, engine.getResponseBody())) - .redirectedBy(redirectedBy) - .build(); - } - - if (!sameConnection(request, redirect)) { - engine.releaseConnection(); - } - - Connection connection = engine.close(); - redirectedBy = response.newBuilder().redirectedBy(redirectedBy).build(); // Chained. - request = redirect; - engine = new HttpEngine(client, request, false, connection, null, null); - } - } - - /** - * Figures out the HTTP request to make in response to receiving {@code - * response}. This will either add authentication headers or follow - * redirects. If a follow-up is either unnecessary or not applicable, this - * returns null. - */ - private Request processResponse(HttpEngine engine, Response response) throws IOException { - Request request = response.request(); - Proxy selectedProxy = engine.getRoute() != null - ? engine.getRoute().getProxy() - : client.getProxy(); - int responseCode = response.code(); - - switch (responseCode) { - case HTTP_PROXY_AUTH: - if (selectedProxy.type() != Proxy.Type.HTTP) { - throw new ProtocolException("Received HTTP_PROXY_AUTH (407) code while not using proxy"); - } - // fall-through - case HTTP_UNAUTHORIZED: - return HttpAuthenticator.processAuthHeader( - client.getAuthenticator(), response, selectedProxy); - - case HTTP_MULT_CHOICE: - case HTTP_MOVED_PERM: - case HTTP_MOVED_TEMP: - case HTTP_SEE_OTHER: - case HTTP_TEMP_REDIRECT: - if (!client.getFollowProtocolRedirects()) { - return null; // This client has is configured to not follow redirects. - } - - if (++redirectionCount > HttpURLConnectionImpl.MAX_REDIRECTS) { - throw new ProtocolException("Too many redirects: " + redirectionCount); - } - - String method = request.method(); - if (responseCode == HTTP_TEMP_REDIRECT && !method.equals("GET") && !method.equals("HEAD")) { - // "If the 307 status code is received in response to a request other than GET or HEAD, - // the user agent MUST NOT automatically redirect the request" - return null; - } - - String location = response.header("Location"); - if (location == null) { - return null; - } - - URL url = new URL(request.url(), location); - if (!url.getProtocol().equals("https") && !url.getProtocol().equals("http")) { - return null; // Don't follow redirects to unsupported protocols. - } - - return this.request.newBuilder().url(url).build(); - - default: - return null; - } - } - - static boolean sameConnection(Request a, Request b) { - return a.url().getHost().equals(b.url().getHost()) - && getEffectivePort(a.url()) == getEffectivePort(b.url()) - && a.url().getProtocol().equals(b.url().getProtocol()); - } - - static class RealResponseBody extends Response.Body { - private final Response response; - private final Source source; - - /** Multiple calls to {@link #byteStream} must return the same instance. */ - private InputStream in; - - RealResponseBody(Response response, Source source) { - this.response = response; - this.source = source; - } - - @Override public boolean ready() throws IOException { - return true; - } - - @Override public MediaType contentType() { - String contentType = response.header("Content-Type"); - return contentType != null ? MediaType.parse(contentType) : null; - } - - @Override public long contentLength() { - return OkHeaders.contentLength(response); - } - - @Override public Source source() { - return source; - } - - @Override public InputStream byteStream() { - InputStream result = in; - return result != null - ? result - : (in = Okio.buffer(source).inputStream()); - } - } -} diff --git a/okhttp/src/main/java/com/squareup/okhttp/OkAuthenticator.java b/okhttp/src/main/java/com/squareup/okhttp/OkAuthenticator.java index e8ca5ea87..759eb92fd 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/OkAuthenticator.java +++ b/okhttp/src/main/java/com/squareup/okhttp/OkAuthenticator.java @@ -15,12 +15,12 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.okio.ByteString; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.Proxy; import java.net.URL; import java.util.List; -import okio.ByteString; /** * Responds to authentication challenges from the remote web or proxy server by diff --git a/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java b/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java index 95406082a..232722a00 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java +++ b/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java @@ -20,6 +20,7 @@ import com.squareup.okhttp.internal.http.HttpAuthenticator; import com.squareup.okhttp.internal.http.HttpURLConnectionImpl; import com.squareup.okhttp.internal.http.HttpsURLConnectionImpl; import com.squareup.okhttp.internal.http.ResponseCacheAdapter; +import com.squareup.okhttp.internal.okio.ByteString; import com.squareup.okhttp.internal.tls.OkHostnameVerifier; import java.io.IOException; import java.net.CookieHandler; @@ -38,13 +39,11 @@ import java.util.concurrent.TimeUnit; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; -import okio.ByteString; /** Configures and creates HTTP connections. */ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { private final RouteDatabase routeDatabase; - private Dispatcher dispatcher; private Proxy proxy; private List protocols; private ProxySelector proxySelector; @@ -60,7 +59,6 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { public OkHttpClient() { routeDatabase = new RouteDatabase(); - dispatcher = new Dispatcher(); } /** @@ -265,21 +263,7 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { } /** - * Sets the dispatcher used to set policy and execute asynchronous requests. - * Must not be null. - */ - public OkHttpClient setDispatcher(Dispatcher dispatcher) { - if (dispatcher == null) throw new IllegalArgumentException("dispatcher == null"); - this.dispatcher = dispatcher; - return this; - } - - public Dispatcher getDispatcher() { - return dispatcher; - } - - /** - * @deprecated OkHttp 2 enforces an enumeration of {@link Protocol protocols} + * @deprecated OkHttp 1.5 enforces an enumeration of {@link Protocol protocols} * that can be selected. Please switch to {@link #setProtocols(java.util.List)}. */ @Deprecated @@ -287,7 +271,7 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { List protocols = new ArrayList(transports.size()); for (int i = 0, size = transports.size(); i < size; i++) { try { - Protocol protocol = Protocol.find(ByteString.encodeUtf8(transports.get(i))); + Protocol protocol = Util.getProtocol(ByteString.encodeUtf8(transports.get(i))); protocols.add(protocol); } catch (IOException e) { throw new IllegalArgumentException(e); @@ -337,8 +321,9 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { } /** - * @deprecated OkHttp 2 enforces an enumeration of {@link Protocol protocols} - * that can be selected. Please switch to {@link #getProtocols()}. + * @deprecated OkHttp 1.5 enforces an enumeration of {@link Protocol + * protocols} that can be selected. Please switch to {@link + * #getProtocols()}. */ @Deprecated public List getTransports() { @@ -353,68 +338,6 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { return protocols; } - /** - * Invokes {@code request} immediately, and blocks until the response can be - * processed or is in error. - * - *

The caller may read the response body with the response's - * {@link Response#body} method. To facilitate connection recycling, callers - * should always {@link Response.Body#close() close the response body}. - * - *

Note that transport-layer success (receiving a HTTP response code, - * headers and body) does not necessarily indicate application-layer - * success: {@code response} may still indicate an unhappy HTTP response - * code like 404 or 500. - * - *

Non-blocking responses

- * - *

Receivers do not need to block while waiting for the response body to - * download. Instead, they can get called back as data arrives. Use {@link - * Response.Body#ready} to check if bytes should be read immediately. While - * there is data ready, read it. - * - *

The current implementation of {@link Response.Body#ready} always - * returns true when the underlying transport is HTTP/1. This results in - * blocking on that transport. For effective non-blocking your server must - * support {@link Protocol#SPDY_3} or {@link Protocol#HTTP_2}. - * - * @throws IOException when the request could not be executed due to a - * connectivity problem or timeout. Because networks can fail during an - * exchange, it is possible that the remote server accepted the request - * before the failure. - */ - public Response execute(Request request) throws IOException { - // Copy the client. Otherwise changes (socket factory, redirect policy, - // etc.) may incorrectly be reflected in the request when it is executed. - OkHttpClient client = copyWithDefaults(); - Job job = new Job(dispatcher, client, request, null); - Response result = job.getResponse(); // Since we don't cancel, this won't be null. - job.engine.releaseConnection(); // Transfer ownership of the body to the caller. - return result; - } - - /** - * Schedules {@code request} to be executed at some point in the future. The - * {@link #getDispatcher dispatcher} defines when the request will run: - * usually immediately unless there are several other requests currently being - * executed. - * - *

This client will later call back {@code responseReceiver} with either an - * HTTP response or a failure exception. If you {@link #cancel} a request - * before it completes the receiver will not be called back. - */ - public void enqueue(Request request, Response.Receiver responseReceiver) { - dispatcher.enqueue(this, request, responseReceiver); - } - - /** - * Cancels all scheduled tasks tagged with {@code tag}. Requests that are already - * complete cannot be canceled. - */ - public void cancel(Object tag) { - dispatcher.cancel(tag); - } - public HttpURLConnection open(URL url) { return open(url, proxy); } @@ -457,7 +380,7 @@ public final class OkHttpClient implements URLStreamHandlerFactory, Cloneable { result.connectionPool = ConnectionPool.getDefault(); } if (result.protocols == null) { - result.protocols = Protocol.HTTP2_SPDY3_AND_HTTP; + result.protocols = Util.HTTP2_SPDY3_AND_HTTP; } return result; } diff --git a/okhttp/src/main/java/com/squareup/okhttp/OkResponseCache.java b/okhttp/src/main/java/com/squareup/okhttp/OkResponseCache.java index 05460f5ad..90238638d 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/OkResponseCache.java +++ b/okhttp/src/main/java/com/squareup/okhttp/OkResponseCache.java @@ -15,12 +15,17 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.http.Request; +import com.squareup.okhttp.internal.http.Response; import java.io.IOException; import java.net.CacheRequest; /** * An extended response cache API. Unlike {@link java.net.ResponseCache}, this * interface supports conditional caching and statistics. + * + *

Warning: Experimental OkHttp 2.0 API

+ * This class is in beta. APIs are subject to change! */ public interface OkResponseCache { Response get(Request request) throws IOException; diff --git a/okhttp/src/main/java/com/squareup/okhttp/Protocol.java b/okhttp/src/main/java/com/squareup/okhttp/Protocol.java index e2d7ba931..7dd6791af 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Protocol.java +++ b/okhttp/src/main/java/com/squareup/okhttp/Protocol.java @@ -15,11 +15,7 @@ */ package com.squareup.okhttp; -import com.squareup.okhttp.internal.Util; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import okio.ByteString; +import com.squareup.okhttp.internal.okio.ByteString; /** * Contains protocols that OkHttp supports @@ -38,13 +34,6 @@ public enum Protocol { SPDY_3("spdy/3.1", true), HTTP_11("http/1.1", false); - public static final List HTTP2_SPDY3_AND_HTTP = - Util.immutableList(Arrays.asList(HTTP_2, SPDY_3, HTTP_11)); - public static final List SPDY3_AND_HTTP11 = - Util.immutableList(Arrays.asList(SPDY_3, HTTP_11)); - public static final List HTTP2_AND_HTTP_11 = - Util.immutableList(Arrays.asList(HTTP_2, HTTP_11)); - /** Identifier string used in NPN or ALPN selection. */ public final ByteString name; @@ -59,17 +48,4 @@ public enum Protocol { this.name = ByteString.encodeUtf8(name); this.spdyVariant = spdyVariant; } - - /** - * Returns the protocol matching {@code input} or {@link #HTTP_11} is on - * {@code null}. Throws an {@link IOException} when {@code input} doesn't - * match the {@link #name} of a supported protocol. - */ - public static Protocol find(ByteString input) throws IOException { - if (input == null) return HTTP_11; - for (Protocol protocol : values()) { - if (protocol.name.equals(input)) return protocol; - } - throw new IOException("Unexpected protocol: " + input.utf8()); - } } diff --git a/okhttp/src/main/java/com/squareup/okhttp/TunnelRequest.java b/okhttp/src/main/java/com/squareup/okhttp/TunnelRequest.java index 3bcff5a8a..4eef1797b 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/TunnelRequest.java +++ b/okhttp/src/main/java/com/squareup/okhttp/TunnelRequest.java @@ -15,6 +15,7 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.http.Request; import java.io.IOException; import java.net.URL; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/DiskLruCache.java b/okhttp/src/main/java/com/squareup/okhttp/internal/DiskLruCache.java index 569da9b51..e16f40015 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/DiskLruCache.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/DiskLruCache.java @@ -16,6 +16,10 @@ package com.squareup.okhttp.internal; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; import java.io.Closeable; import java.io.EOFException; import java.io.File; @@ -34,10 +38,6 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.OkBuffer; -import okio.Okio; /** * A cache that uses a bounded amount of space on a filesystem. Each cache diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/Platform.java b/okhttp/src/main/java/com/squareup/okhttp/internal/Platform.java index 1e7bc40c8..d0cfbde14 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/Platform.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/Platform.java @@ -17,6 +17,7 @@ package com.squareup.okhttp.internal; import com.squareup.okhttp.Protocol; +import com.squareup.okhttp.internal.okio.ByteString; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Constructor; @@ -37,7 +38,6 @@ import java.util.logging.Logger; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; import javax.net.ssl.SSLSocket; -import okio.ByteString; /** * Access to Platform-specific features necessary for SPDY and advanced TLS. diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/Util.java b/okhttp/src/main/java/com/squareup/okhttp/internal/Util.java index d1bf250cc..3925f6784 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/Util.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/Util.java @@ -16,6 +16,10 @@ package com.squareup.okhttp.internal; +import com.squareup.okhttp.Protocol; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Source; import com.squareup.okhttp.internal.spdy.Header; import java.io.ByteArrayInputStream; import java.io.Closeable; @@ -37,9 +41,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.ThreadFactory; -import okio.ByteString; -import okio.OkBuffer; -import okio.Source; import static java.util.concurrent.TimeUnit.NANOSECONDS; @@ -54,6 +55,12 @@ public final class Util { /** A cheap and type-safe constant for the UTF-8 Charset. */ public static final Charset UTF_8 = Charset.forName("UTF-8"); + public static final List HTTP2_SPDY3_AND_HTTP = + immutableList(Arrays.asList(Protocol.HTTP_2, Protocol.SPDY_3, Protocol.HTTP_11)); + public static final List SPDY3_AND_HTTP11 = + immutableList(Arrays.asList(Protocol.SPDY_3, Protocol.HTTP_11)); + public static final List HTTP2_AND_HTTP_11 = + immutableList(Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_11)); private Util() { } @@ -286,4 +293,17 @@ public final class Util { } return result; } + + /** + * Returns the protocol matching {@code input} or {@link #HTTP_11} is on + * {@code null}. Throws an {@link java.io.IOException} when {@code input} doesn't + * match the {@link #name} of a supported protocol. + */ + public static Protocol getProtocol(ByteString input) throws IOException { + if (input == null) return Protocol.HTTP_11; + for (Protocol protocol : Protocol.values()) { + if (protocol.name.equals(input)) return protocol; + } + throw new IOException("Unexpected protocol: " + input.utf8()); + } } diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/CacheStrategy.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/CacheStrategy.java index 7cc7e211d..68e680428 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/CacheStrategy.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/CacheStrategy.java @@ -2,8 +2,6 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.CacheControl; import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseSource; import java.io.IOException; import java.io.InputStream; diff --git a/okhttp/src/main/java/com/squareup/okhttp/Failure.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Failure.java similarity index 96% rename from okhttp/src/main/java/com/squareup/okhttp/Failure.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/http/Failure.java index 51ee2eae3..d6039cedd 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Failure.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Failure.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.squareup.okhttp; +package com.squareup.okhttp.internal.http; /** * A failure attempting to retrieve an HTTP response. diff --git a/okhttp/src/main/java/com/squareup/okhttp/Headers.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Headers.java similarity index 99% rename from okhttp/src/main/java/com/squareup/okhttp/Headers.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/http/Headers.java index 1221aa4e0..98fe4f5f6 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Headers.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Headers.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package com.squareup.okhttp; +package com.squareup.okhttp.internal.http; import java.util.ArrayList; import java.util.Arrays; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpAuthenticator.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpAuthenticator.java index ce40a92c2..b1d14cab5 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpAuthenticator.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpAuthenticator.java @@ -16,11 +16,8 @@ */ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.OkAuthenticator; import com.squareup.okhttp.OkAuthenticator.Challenge; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import java.io.IOException; import java.net.Authenticator; import java.net.InetAddress; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpConnection.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpConnection.java index 7639bfa69..6ffecf6ba 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpConnection.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpConnection.java @@ -18,22 +18,20 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.Connection; import com.squareup.okhttp.ConnectionPool; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.Protocol; -import com.squareup.okhttp.Response; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.io.OutputStream; import java.net.CacheRequest; import java.net.ProtocolException; import java.net.Socket; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.Deadline; -import okio.OkBuffer; -import okio.Okio; -import okio.Sink; -import okio.Source; import static com.squareup.okhttp.internal.Util.checkOffsetAndCount; import static com.squareup.okhttp.internal.http.StatusLine.HTTP_CONTINUE; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java index 20bc3b78a..ef1617de4 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java @@ -19,15 +19,17 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.Address; import com.squareup.okhttp.Connection; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.OkResponseCache; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseSource; import com.squareup.okhttp.Route; import com.squareup.okhttp.TunnelRequest; import com.squareup.okhttp.internal.Dns; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.GzipSource; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.io.InputStream; import java.net.CacheRequest; @@ -41,11 +43,6 @@ import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLSocketFactory; -import okio.BufferedSink; -import okio.GzipSource; -import okio.Okio; -import okio.Sink; -import okio.Source; import static com.squareup.okhttp.internal.Util.closeQuietly; import static com.squareup.okhttp.internal.Util.getDefaultPort; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpTransport.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpTransport.java index a1b367f47..026e6589f 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpTransport.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpTransport.java @@ -16,12 +16,10 @@ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.net.CacheRequest; -import okio.Sink; -import okio.Source; public final class HttpTransport implements Transport { private final HttpEngine httpEngine; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java index f1a37cbf4..bb1b13545 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpURLConnectionImpl.java @@ -19,14 +19,14 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.Connection; import com.squareup.okhttp.Handshake; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Protocol; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.Route; import com.squareup.okhttp.internal.Platform; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Sink; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -45,9 +45,6 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import okio.BufferedSink; -import okio.ByteString; -import okio.Sink; import static com.squareup.okhttp.internal.Util.getEffectivePort; import static com.squareup.okhttp.internal.http.StatusLine.HTTP_TEMP_REDIRECT; @@ -559,7 +556,7 @@ public class HttpURLConnectionImpl extends HttpURLConnection { } for (String protocol : protocolsString.split(",", -1)) { try { - protocolsList.add(Protocol.find(ByteString.encodeUtf8(protocol))); + protocolsList.add(Util.getProtocol(ByteString.encodeUtf8(protocol))); } catch (IOException e) { throw new IllegalStateException(e); } diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/OkHeaders.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/OkHeaders.java index 456c9c753..88aef2ff0 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/OkHeaders.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/OkHeaders.java @@ -1,8 +1,5 @@ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Headers; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.internal.Platform; import java.util.ArrayList; import java.util.Collections; diff --git a/okhttp/src/main/java/com/squareup/okhttp/Request.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Request.java similarity index 98% rename from okhttp/src/main/java/com/squareup/okhttp/Request.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/http/Request.java index 300dc17e5..21c9f05cc 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Request.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Request.java @@ -13,10 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.squareup.okhttp; +package com.squareup.okhttp.internal.http; +import com.squareup.okhttp.CacheControl; +import com.squareup.okhttp.MediaType; import com.squareup.okhttp.internal.Platform; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -27,7 +30,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.List; -import okio.BufferedSink; /** * An HTTP request. Instances of this class are immutable if their {@link #body} diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RequestLine.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RequestLine.java index c918df3c2..ec209284e 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RequestLine.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RequestLine.java @@ -1,6 +1,5 @@ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Request; import java.net.Proxy; import java.net.URL; diff --git a/okhttp/src/main/java/com/squareup/okhttp/Response.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Response.java similarity index 98% rename from okhttp/src/main/java/com/squareup/okhttp/Response.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/http/Response.java index 13f912420..843c14b74 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Response.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Response.java @@ -13,12 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.squareup.okhttp; +package com.squareup.okhttp.internal.http; +import com.squareup.okhttp.CacheControl; +import com.squareup.okhttp.Handshake; +import com.squareup.okhttp.MediaType; +import com.squareup.okhttp.ResponseSource; import com.squareup.okhttp.internal.Util; -import com.squareup.okhttp.internal.http.HttpDate; -import com.squareup.okhttp.internal.http.OkHeaders; -import com.squareup.okhttp.internal.http.StatusLine; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Source; import java.io.ByteArrayOutputStream; import java.io.Closeable; import java.io.IOException; @@ -32,8 +35,6 @@ import java.util.Date; import java.util.List; import java.util.Set; import java.util.TreeSet; -import okio.Okio; -import okio.Source; import static com.squareup.okhttp.internal.Util.UTF_8; import static com.squareup.okhttp.internal.Util.equal; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/ResponseCacheAdapter.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/ResponseCacheAdapter.java index 9d6eb22c6..a182fabff 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/ResponseCacheAdapter.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/ResponseCacheAdapter.java @@ -16,11 +16,8 @@ package com.squareup.okhttp.internal.http; import com.squareup.okhttp.Handshake; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkResponseCache; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseSource; import java.io.IOException; import java.io.InputStream; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RetryableSink.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RetryableSink.java index b8f53a3d8..69a529143 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RetryableSink.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RetryableSink.java @@ -16,12 +16,12 @@ package com.squareup.okhttp.internal.http; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Sink; import java.io.IOException; import java.net.ProtocolException; -import okio.BufferedSink; -import okio.Deadline; -import okio.OkBuffer; -import okio.Sink; import static com.squareup.okhttp.internal.Util.checkOffsetAndCount; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java index f3afcaca0..2327153ba 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java @@ -16,11 +16,14 @@ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Headers; import com.squareup.okhttp.Protocol; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import com.squareup.okhttp.internal.spdy.ErrorCode; import com.squareup.okhttp.internal.spdy.Header; import com.squareup.okhttp.internal.spdy.SpdyConnection; @@ -34,12 +37,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Set; -import okio.ByteString; -import okio.Deadline; -import okio.OkBuffer; -import okio.Okio; -import okio.Sink; -import okio.Source; import static com.squareup.okhttp.internal.spdy.Header.RESPONSE_STATUS; import static com.squareup.okhttp.internal.spdy.Header.TARGET_AUTHORITY; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/Transport.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Transport.java index 94c90d48e..81ddc0f5a 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/Transport.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/Transport.java @@ -16,12 +16,10 @@ package com.squareup.okhttp.internal.http; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.net.CacheRequest; -import okio.Sink; -import okio.Source; interface Transport { /** diff --git a/okio/src/main/java/okio/Base64.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Base64.java similarity index 99% rename from okio/src/main/java/okio/Base64.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Base64.java index 087b28747..1c7a1897c 100644 --- a/okio/src/main/java/okio/Base64.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Base64.java @@ -19,7 +19,7 @@ * @author Alexander Y. Kleymenov */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.UnsupportedEncodingException; diff --git a/okio/src/main/java/okio/BufferedSink.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSink.java similarity index 97% rename from okio/src/main/java/okio/BufferedSink.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSink.java index e5cc42d20..cc1897d32 100644 --- a/okio/src/main/java/okio/BufferedSink.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSink.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.OutputStream; diff --git a/okio/src/main/java/okio/BufferedSource.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSource.java similarity index 98% rename from okio/src/main/java/okio/BufferedSource.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSource.java index 678721b09..2d6a8824d 100644 --- a/okio/src/main/java/okio/BufferedSource.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/BufferedSource.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.InputStream; diff --git a/okio/src/main/java/okio/ByteString.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/ByteString.java similarity index 99% rename from okio/src/main/java/okio/ByteString.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/ByteString.java index 608d65264..0721caeea 100644 --- a/okio/src/main/java/okio/ByteString.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/ByteString.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; diff --git a/okio/src/main/java/okio/Deadline.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Deadline.java similarity index 97% rename from okio/src/main/java/okio/Deadline.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Deadline.java index 15a7c6d49..08bd34305 100644 --- a/okio/src/main/java/okio/Deadline.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Deadline.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.util.concurrent.TimeUnit; diff --git a/okio/src/main/java/okio/DeflaterSink.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/DeflaterSink.java similarity index 96% rename from okio/src/main/java/okio/DeflaterSink.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/DeflaterSink.java index e3a7cab2a..1e18f5744 100644 --- a/okio/src/main/java/okio/DeflaterSink.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/DeflaterSink.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.util.zip.Deflater; import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement; -import static okio.Util.checkOffsetAndCount; +import static com.squareup.okhttp.internal.okio.Util.checkOffsetAndCount; /** * A sink that uses DEFLATE to diff --git a/okio/src/main/java/okio/GzipSource.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/GzipSource.java similarity index 99% rename from okio/src/main/java/okio/GzipSource.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/GzipSource.java index fe73c0846..951faf2f8 100644 --- a/okio/src/main/java/okio/GzipSource.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/GzipSource.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.util.zip.CRC32; diff --git a/okio/src/main/java/okio/InflaterSource.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/InflaterSource.java similarity index 98% rename from okio/src/main/java/okio/InflaterSource.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/InflaterSource.java index c86c9959a..aa6f5ba5d 100644 --- a/okio/src/main/java/okio/InflaterSource.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/InflaterSource.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; diff --git a/okio/src/main/java/okio/OkBuffer.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/OkBuffer.java similarity index 98% rename from okio/src/main/java/okio/OkBuffer.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/OkBuffer.java index a9dfa2f24..6e0b5ff6e 100644 --- a/okio/src/main/java/okio/OkBuffer.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/OkBuffer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.InputStream; @@ -24,8 +24,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static okio.Util.UTF_8; -import static okio.Util.checkOffsetAndCount; +import static com.squareup.okhttp.internal.okio.Util.UTF_8; +import static com.squareup.okhttp.internal.okio.Util.checkOffsetAndCount; /** * A collection of bytes in memory. @@ -253,7 +253,7 @@ public final class OkBuffer implements BufferedSource, BufferedSink, Cloneable { Segment head = this.head; if (head.pos + byteCount > head.limit) { // If the string spans multiple segments, delegate to readBytes(). - return new String(readBytes(byteCount), Util.UTF_8); + return new String(readBytes(byteCount), UTF_8); } String result = new String(head.data, head.pos, (int) byteCount, UTF_8); @@ -369,7 +369,7 @@ public final class OkBuffer implements BufferedSource, BufferedSink, Cloneable { /** Encodes {@code string} as UTF-8 and appends the bytes to this. */ @Override public OkBuffer writeUtf8(String string) { - byte[] data = string.getBytes(Util.UTF_8); + byte[] data = string.getBytes(UTF_8); return write(data, 0, data.length); } diff --git a/okio/src/main/java/okio/Okio.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Okio.java similarity index 97% rename from okio/src/main/java/okio/Okio.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Okio.java index 3a9b4f9f8..f42ca6db3 100644 --- a/okio/src/main/java/okio/Okio.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Okio.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import static okio.Util.checkOffsetAndCount; +import static com.squareup.okhttp.internal.okio.Util.checkOffsetAndCount; public final class Okio { private Okio() { diff --git a/okio/src/main/java/okio/RealBufferedSink.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSink.java similarity index 99% rename from okio/src/main/java/okio/RealBufferedSink.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSink.java index 691c070cc..12a3eda39 100644 --- a/okio/src/main/java/okio/RealBufferedSink.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSink.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.IOException; import java.io.OutputStream; diff --git a/okio/src/main/java/okio/RealBufferedSource.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSource.java similarity index 98% rename from okio/src/main/java/okio/RealBufferedSource.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSource.java index 9e9a34af8..5b0ef9830 100644 --- a/okio/src/main/java/okio/RealBufferedSource.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/RealBufferedSource.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; -import static okio.Util.checkOffsetAndCount; +import static com.squareup.okhttp.internal.okio.Util.checkOffsetAndCount; final class RealBufferedSource implements BufferedSource { public final OkBuffer buffer; diff --git a/okio/src/main/java/okio/Segment.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Segment.java similarity index 99% rename from okio/src/main/java/okio/Segment.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Segment.java index 77dbee186..452be26d4 100644 --- a/okio/src/main/java/okio/Segment.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Segment.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; /** * A segment of an OkBuffer. diff --git a/okio/src/main/java/okio/SegmentPool.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/SegmentPool.java similarity index 97% rename from okio/src/main/java/okio/SegmentPool.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/SegmentPool.java index c132f244b..2b3f3313d 100644 --- a/okio/src/main/java/okio/SegmentPool.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/SegmentPool.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; /** * A collection of unused segments, necessary to avoid GC churn and zero-fill. diff --git a/okio/src/main/java/okio/Sink.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Sink.java similarity index 98% rename from okio/src/main/java/okio/Sink.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Sink.java index 402aa0fc3..01f5aadd3 100644 --- a/okio/src/main/java/okio/Sink.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Sink.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.Closeable; import java.io.IOException; diff --git a/okio/src/main/java/okio/Source.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Source.java similarity index 98% rename from okio/src/main/java/okio/Source.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Source.java index d402beed3..8f6ece733 100644 --- a/okio/src/main/java/okio/Source.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Source.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.io.Closeable; import java.io.IOException; diff --git a/okio/src/main/java/okio/Util.java b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Util.java similarity index 97% rename from okio/src/main/java/okio/Util.java rename to okhttp/src/main/java/com/squareup/okhttp/internal/okio/Util.java index e5c1ddcd8..a626c343b 100644 --- a/okio/src/main/java/okio/Util.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/okio/Util.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okio; +package com.squareup.okhttp.internal.okio; import java.nio.charset.Charset; diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameReader.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameReader.java index c87226a61..e7c6e81f3 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameReader.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameReader.java @@ -16,11 +16,11 @@ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; import java.io.Closeable; import java.io.IOException; import java.util.List; -import okio.BufferedSource; -import okio.ByteString; /** Reads transport frames for SPDY/3 or HTTP/2. */ public interface FrameReader extends Closeable { diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameWriter.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameWriter.java index f96c2aa09..79cc88433 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameWriter.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/FrameWriter.java @@ -16,10 +16,10 @@ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.OkBuffer; import java.io.Closeable; import java.io.IOException; import java.util.List; -import okio.OkBuffer; /** Writes transport frames for SPDY/3 or HTTP/2. */ public interface FrameWriter extends Closeable { diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Header.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Header.java index 1e9b50312..c82cabf3c 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Header.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Header.java @@ -1,6 +1,6 @@ package com.squareup.okhttp.internal.spdy; -import okio.ByteString; +import com.squareup.okhttp.internal.okio.ByteString; /** HTTP header: the name is an ASCII string, but the value can be UTF-8. */ public final class Header { diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/HpackDraft05.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/HpackDraft05.java index f1257116d..a039b8d46 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/HpackDraft05.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/HpackDraft05.java @@ -1,6 +1,11 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.internal.BitArray; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -8,11 +13,6 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import okio.BufferedSource; -import okio.ByteString; -import okio.OkBuffer; -import okio.Okio; -import okio.Source; /** * Read and write HPACK v05. diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Http20Draft09.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Http20Draft09.java index a88b747ef..8071940ee 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Http20Draft09.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Http20Draft09.java @@ -16,14 +16,14 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.Protocol; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.util.List; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.ByteString; -import okio.Deadline; -import okio.OkBuffer; -import okio.Source; /** * Read and write http/2 v09 frames. diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Huffman.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Huffman.java index 45d882f6e..a1732eae4 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Huffman.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Huffman.java @@ -15,10 +15,10 @@ */ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.ByteString; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import okio.ByteString; /** * This class was originally composed from the following classes in diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/NameValueBlockReader.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/NameValueBlockReader.java index 293d817a1..dc397298e 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/NameValueBlockReader.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/NameValueBlockReader.java @@ -1,17 +1,17 @@ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.InflaterSource; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; +import com.squareup.okhttp.internal.okio.Source; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.DataFormatException; import java.util.zip.Inflater; -import okio.BufferedSource; -import okio.ByteString; -import okio.Deadline; -import okio.InflaterSource; -import okio.OkBuffer; -import okio.Okio; -import okio.Source; /** * Reads a SPDY/3 Name/Value header block. This class is made complicated by the diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/PushObserver.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/PushObserver.java index 8eecf6b84..8290840d5 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/PushObserver.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/PushObserver.java @@ -15,9 +15,9 @@ */ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.BufferedSource; import java.io.IOException; import java.util.List; -import okio.BufferedSource; /** * {@link com.squareup.okhttp.Protocol#HTTP_2 HTTP/2} only. diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Spdy3.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Spdy3.java index a71bc6f5f..8351418e5 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Spdy3.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Spdy3.java @@ -17,17 +17,17 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.Protocol; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.DeflaterSink; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.ProtocolException; import java.util.List; import java.util.zip.Deflater; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.ByteString; -import okio.DeflaterSink; -import okio.OkBuffer; -import okio.Okio; /** * Read and write spdy/3.1 frames. diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java index fab8698a2..1ab4ab531 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java @@ -18,6 +18,11 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.Protocol; import com.squareup.okhttp.internal.NamedRunnable; import com.squareup.okhttp.internal.Util; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.ByteString; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Okio; import java.io.Closeable; import java.io.IOException; import java.io.InterruptedIOException; @@ -32,11 +37,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import okio.BufferedSink; -import okio.BufferedSource; -import okio.ByteString; -import okio.OkBuffer; -import okio.Okio; /** * A socket connection to a remote peer. A connection hosts streams which can diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyStream.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyStream.java index d48e3dc13..c8c0d02c9 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyStream.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyStream.java @@ -16,17 +16,17 @@ package com.squareup.okhttp.internal.spdy; +import com.squareup.okhttp.internal.okio.BufferedSource; +import com.squareup.okhttp.internal.okio.Deadline; +import com.squareup.okhttp.internal.okio.OkBuffer; +import com.squareup.okhttp.internal.okio.Sink; +import com.squareup.okhttp.internal.okio.Source; import java.io.EOFException; import java.io.IOException; import java.io.InterruptedIOException; import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.List; -import okio.BufferedSource; -import okio.Deadline; -import okio.OkBuffer; -import okio.Sink; -import okio.Source; /** A logical bidirectional stream. */ public final class SpdyStream { diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Variant.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Variant.java index f8b14acbd..ceab45dbb 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Variant.java +++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/Variant.java @@ -16,8 +16,8 @@ package com.squareup.okhttp.internal.spdy; import com.squareup.okhttp.Protocol; -import okio.BufferedSink; -import okio.BufferedSource; +import com.squareup.okhttp.internal.okio.BufferedSink; +import com.squareup.okhttp.internal.okio.BufferedSource; /** A version and dialect of the framed socket protocol. */ interface Variant { diff --git a/okio/pom.xml b/okio/pom.xml deleted file mode 100644 index f1a33b5d6..000000000 --- a/okio/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 4.0.0 - - - com.squareup.okhttp - parent - 2.0.0-SNAPSHOT - - - com.squareup.okio - okio - Okio - - - - junit - junit - test - - - org.codehaus.mojo - animal-sniffer-annotations - 1.10 - true - - - diff --git a/pom.xml b/pom.xml index 2216c732c..fddd70e4e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,8 +22,6 @@ okhttp okhttp-apache okhttp-tests - okcurl - okio mockwebserver samples benchmarks