cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From agri...@apache.org
Subject [11/12] android commit: CB-6630 Delete bundled (and outdated) copy of OkHttp
Date Wed, 31 Dec 2014 04:01:14 GMT
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/OkHttpClient.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/OkHttpClient.java b/framework/src/com/squareup/okhttp/OkHttpClient.java
deleted file mode 100755
index f78592f..0000000
--- a/framework/src/com/squareup/okhttp/OkHttpClient.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * Copyright (C) 2012 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 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.OkResponseCacheAdapter;
-import com.squareup.okhttp.internal.tls.OkHostnameVerifier;
-import java.net.CookieHandler;
-import java.net.HttpURLConnection;
-import java.net.Proxy;
-import java.net.ProxySelector;
-import java.net.ResponseCache;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSocketFactory;
-
-/** Configures and creates HTTP connections. */
-public final class OkHttpClient implements URLStreamHandlerFactory {
-  private static final List<String> DEFAULT_TRANSPORTS
-      = Util.immutableList(Arrays.asList("spdy/3", "http/1.1"));
-
-  private final RouteDatabase routeDatabase;
-  private final Dispatcher dispatcher;
-  private Proxy proxy;
-  private List<String> transports;
-  private ProxySelector proxySelector;
-  private CookieHandler cookieHandler;
-  private ResponseCache responseCache;
-  private SSLSocketFactory sslSocketFactory;
-  private HostnameVerifier hostnameVerifier;
-  private OkAuthenticator authenticator;
-  private ConnectionPool connectionPool;
-  private boolean followProtocolRedirects = true;
-  private int connectTimeout;
-  private int readTimeout;
-
-  public OkHttpClient() {
-    routeDatabase = new RouteDatabase();
-    dispatcher = new Dispatcher();
-  }
-
-  private OkHttpClient(OkHttpClient copyFrom) {
-    routeDatabase = copyFrom.routeDatabase;
-    dispatcher = copyFrom.dispatcher;
-  }
-
-  /**
-   * Sets the default connect timeout for new connections. A value of 0 means no timeout.
-   *
-   * @see URLConnection#setConnectTimeout(int)
-   */
-  public void setConnectTimeout(long timeout, TimeUnit unit) {
-    if (timeout < 0) {
-      throw new IllegalArgumentException("timeout < 0");
-    }
-    if (unit == null) {
-      throw new IllegalArgumentException("unit == null");
-    }
-    long millis = unit.toMillis(timeout);
-    if (millis > Integer.MAX_VALUE) {
-      throw new IllegalArgumentException("Timeout too large.");
-    }
-    connectTimeout = (int) millis;
-  }
-
-  /** Default connect timeout (in milliseconds). */
-  public int getConnectTimeout() {
-    return connectTimeout;
-  }
-
-  /**
-   * Sets the default read timeout for new connections. A value of 0 means no timeout.
-   *
-   * @see URLConnection#setReadTimeout(int)
-   */
-  public void setReadTimeout(long timeout, TimeUnit unit) {
-    if (timeout < 0) {
-      throw new IllegalArgumentException("timeout < 0");
-    }
-    if (unit == null) {
-      throw new IllegalArgumentException("unit == null");
-    }
-    long millis = unit.toMillis(timeout);
-    if (millis > Integer.MAX_VALUE) {
-      throw new IllegalArgumentException("Timeout too large.");
-    }
-    readTimeout = (int) millis;
-  }
-
-  /** Default read timeout (in milliseconds). */
-  public int getReadTimeout() {
-    return readTimeout;
-  }
-
-  /**
-   * Sets the HTTP proxy that will be used by connections created by this
-   * client. This takes precedence over {@link #setProxySelector}, which is
-   * only honored when this proxy is null (which it is by default). To disable
-   * proxy use completely, call {@code setProxy(Proxy.NO_PROXY)}.
-   */
-  public OkHttpClient setProxy(Proxy proxy) {
-    this.proxy = proxy;
-    return this;
-  }
-
-  public Proxy getProxy() {
-    return proxy;
-  }
-
-  /**
-   * Sets the proxy selection policy to be used if no {@link #setProxy proxy}
-   * is specified explicitly. The proxy selector may return multiple proxies;
-   * in that case they will be tried in sequence until a successful connection
-   * is established.
-   *
-   * <p>If unset, the {@link ProxySelector#getDefault() system-wide default}
-   * proxy selector will be used.
-   */
-  public OkHttpClient setProxySelector(ProxySelector proxySelector) {
-    this.proxySelector = proxySelector;
-    return this;
-  }
-
-  public ProxySelector getProxySelector() {
-    return proxySelector;
-  }
-
-  /**
-   * Sets the cookie handler to be used to read outgoing cookies and write
-   * incoming cookies.
-   *
-   * <p>If unset, the {@link CookieHandler#getDefault() system-wide default}
-   * cookie handler will be used.
-   */
-  public OkHttpClient setCookieHandler(CookieHandler cookieHandler) {
-    this.cookieHandler = cookieHandler;
-    return this;
-  }
-
-  public CookieHandler getCookieHandler() {
-    return cookieHandler;
-  }
-
-  /**
-   * Sets the response cache to be used to read and write cached responses.
-   *
-   * <p>If unset, the {@link ResponseCache#getDefault() system-wide default}
-   * response cache will be used.
-   */
-  public OkHttpClient setResponseCache(ResponseCache responseCache) {
-    this.responseCache = responseCache;
-    return this;
-  }
-
-  public ResponseCache getResponseCache() {
-    return responseCache;
-  }
-
-  public OkResponseCache getOkResponseCache() {
-    if (responseCache instanceof HttpResponseCache) {
-      return ((HttpResponseCache) responseCache).okResponseCache;
-    } else if (responseCache != null) {
-      return new OkResponseCacheAdapter(responseCache);
-    } else {
-      return null;
-    }
-  }
-
-  /**
-   * Sets the socket factory used to secure HTTPS connections.
-   *
-   * <p>If unset, the {@link HttpsURLConnection#getDefaultSSLSocketFactory()
-   * system-wide default} SSL socket factory will be used.
-   */
-  public OkHttpClient setSslSocketFactory(SSLSocketFactory sslSocketFactory) {
-    this.sslSocketFactory = sslSocketFactory;
-    return this;
-  }
-
-  public SSLSocketFactory getSslSocketFactory() {
-    return sslSocketFactory;
-  }
-
-  /**
-   * Sets the verifier used to confirm that response certificates apply to
-   * requested hostnames for HTTPS connections.
-   *
-   * <p>If unset, the {@link HttpsURLConnection#getDefaultHostnameVerifier()
-   * system-wide default} hostname verifier will be used.
-   */
-  public OkHttpClient setHostnameVerifier(HostnameVerifier hostnameVerifier) {
-    this.hostnameVerifier = hostnameVerifier;
-    return this;
-  }
-
-  public HostnameVerifier getHostnameVerifier() {
-    return hostnameVerifier;
-  }
-
-  /**
-   * Sets the authenticator used to respond to challenges from the remote web
-   * server or proxy server.
-   *
-   * <p>If unset, the {@link java.net.Authenticator#setDefault system-wide default}
-   * authenticator will be used.
-   */
-  public OkHttpClient setAuthenticator(OkAuthenticator authenticator) {
-    this.authenticator = authenticator;
-    return this;
-  }
-
-  public OkAuthenticator getAuthenticator() {
-    return authenticator;
-  }
-
-  /**
-   * Sets the connection pool used to recycle HTTP and HTTPS connections.
-   *
-   * <p>If unset, the {@link ConnectionPool#getDefault() system-wide
-   * default} connection pool will be used.
-   */
-  public OkHttpClient setConnectionPool(ConnectionPool connectionPool) {
-    this.connectionPool = connectionPool;
-    return this;
-  }
-
-  public ConnectionPool getConnectionPool() {
-    return connectionPool;
-  }
-
-  /**
-   * Configure this client to follow redirects from HTTPS to HTTP and from HTTP
-   * to HTTPS.
-   *
-   * <p>If unset, protocol redirects will be followed. This is different than
-   * the built-in {@code HttpURLConnection}'s default.
-   */
-  public OkHttpClient setFollowProtocolRedirects(boolean followProtocolRedirects) {
-    this.followProtocolRedirects = followProtocolRedirects;
-    return this;
-  }
-
-  public boolean getFollowProtocolRedirects() {
-    return followProtocolRedirects;
-  }
-
-  public RouteDatabase getRoutesDatabase() {
-    return routeDatabase;
-  }
-
-  /**
-   * Configure the transports used by this client to communicate with remote
-   * servers. By default this client will prefer the most efficient transport
-   * available, falling back to more ubiquitous transports. Applications should
-   * only call this method to avoid specific compatibility problems, such as web
-   * servers that behave incorrectly when SPDY is enabled.
-   *
-   * <p>The following transports are currently supported:
-   * <ul>
-   *   <li><a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">http/1.1</a>
-   *   <li><a href="http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3">spdy/3</a>
-   * </ul>
-   *
-   * <p><strong>This is an evolving set.</strong> Future releases may drop
-   * support for transitional transports (like spdy/3), in favor of their
-   * successors (spdy/4 or http/2.0). The http/1.1 transport will never be
-   * dropped.
-   *
-   * <p>If multiple protocols are specified, <a
-   * href="https://technotes.googlecode.com/git/nextprotoneg.html">NPN</a> will
-   * be used to negotiate a transport. Future releases may use another mechanism
-   * (such as <a href="http://tools.ietf.org/html/draft-friedl-tls-applayerprotoneg-02">ALPN</a>)
-   * to negotiate a transport.
-   *
-   * @param transports the transports to use, in order of preference. The list
-   *     must contain "http/1.1". It must not contain null.
-   */
-  public OkHttpClient setTransports(List<String> transports) {
-    transports = Util.immutableList(transports);
-    if (!transports.contains("http/1.1")) {
-      throw new IllegalArgumentException("transports doesn't contain http/1.1: " + transports);
-    }
-    if (transports.contains(null)) {
-      throw new IllegalArgumentException("transports must not contain null");
-    }
-    if (transports.contains("")) {
-      throw new IllegalArgumentException("transports contains an empty string");
-    }
-    this.transports = transports;
-    return this;
-  }
-
-  public List<String> getTransports() {
-    return transports;
-  }
-
-  /**
-   * Schedules {@code request} to be executed.
-   */
-  /* OkHttp 2.0: public */ void enqueue(Request request, Response.Receiver responseReceiver) {
-    // Create the HttpURLConnection immediately so the enqueued job gets the current settings of
-    // this client. Otherwise changes to this client (socket factory, redirect policy, etc.) may
-    // incorrectly be reflected in the request when it is dispatched later.
-    dispatcher.enqueue(copyWithDefaults(), request, responseReceiver);
-  }
-
-  /**
-   * Cancels all scheduled tasks tagged with {@code tag}. Requests that are already
-   * in flight might not be canceled.
-   */
-  /* OkHttp 2.0: public */ void cancel(Object tag) {
-    dispatcher.cancel(tag);
-  }
-
-  public HttpURLConnection open(URL url) {
-    return open(url, proxy);
-  }
-
-  HttpURLConnection open(URL url, Proxy proxy) {
-    String protocol = url.getProtocol();
-    OkHttpClient copy = copyWithDefaults();
-    copy.proxy = proxy;
-
-    if (protocol.equals("http")) return new HttpURLConnectionImpl(url, copy);
-    if (protocol.equals("https")) return new HttpsURLConnectionImpl(url, copy);
-    throw new IllegalArgumentException("Unexpected protocol: " + protocol);
-  }
-
-  /**
-   * Returns a shallow copy of this OkHttpClient that uses the system-wide default for
-   * each field that hasn't been explicitly configured.
-   */
-  private OkHttpClient copyWithDefaults() {
-    OkHttpClient result = new OkHttpClient(this);
-    result.proxy = proxy;
-    result.proxySelector = proxySelector != null ? proxySelector : ProxySelector.getDefault();
-    result.cookieHandler = cookieHandler != null ? cookieHandler : CookieHandler.getDefault();
-    result.responseCache = responseCache != null ? responseCache : ResponseCache.getDefault();
-    result.sslSocketFactory = sslSocketFactory != null
-        ? sslSocketFactory
-        : HttpsURLConnection.getDefaultSSLSocketFactory();
-    result.hostnameVerifier = hostnameVerifier != null
-        ? hostnameVerifier
-        : OkHostnameVerifier.INSTANCE;
-    result.authenticator = authenticator != null
-        ? authenticator
-        : HttpAuthenticator.SYSTEM_DEFAULT;
-    result.connectionPool = connectionPool != null ? connectionPool : ConnectionPool.getDefault();
-    result.followProtocolRedirects = followProtocolRedirects;
-    result.transports = transports != null ? transports : DEFAULT_TRANSPORTS;
-    result.connectTimeout = connectTimeout;
-    result.readTimeout = readTimeout;
-    return result;
-  }
-
-  /**
-   * Creates a URLStreamHandler as a {@link URL#setURLStreamHandlerFactory}.
-   *
-   * <p>This code configures OkHttp to handle all HTTP and HTTPS connections
-   * created with {@link URL#openConnection()}: <pre>   {@code
-   *
-   *   OkHttpClient okHttpClient = new OkHttpClient();
-   *   URL.setURLStreamHandlerFactory(okHttpClient);
-   * }</pre>
-   */
-  public URLStreamHandler createURLStreamHandler(final String protocol) {
-    if (!protocol.equals("http") && !protocol.equals("https")) return null;
-
-    return new URLStreamHandler() {
-      @Override protected URLConnection openConnection(URL url) {
-        return open(url);
-      }
-
-      @Override protected URLConnection openConnection(URL url, Proxy proxy) {
-        return open(url, proxy);
-      }
-
-      @Override protected int getDefaultPort() {
-        if (protocol.equals("http")) return 80;
-        if (protocol.equals("https")) return 443;
-        throw new AssertionError();
-      }
-    };
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/OkResponseCache.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/OkResponseCache.java b/framework/src/com/squareup/okhttp/OkResponseCache.java
deleted file mode 100755
index ffe6f54..0000000
--- a/framework/src/com/squareup/okhttp/OkResponseCache.java
+++ /dev/null
@@ -1,56 +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 java.io.IOException;
-import java.net.CacheRequest;
-import java.net.CacheResponse;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.URLConnection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * An extended response cache API. Unlike {@link java.net.ResponseCache}, this
- * interface supports conditional caching and statistics.
- *
- * <h3>Warning: Experimental OkHttp 2.0 API</h3>
- * This class is in beta. APIs are subject to change!
- */
-public interface OkResponseCache {
-  CacheResponse get(URI uri, String requestMethod, Map<String, List<String>> requestHeaders)
-      throws IOException;
-
-  CacheRequest put(URI uri, URLConnection urlConnection) throws IOException;
-
-  /** Remove any cache entries for the supplied {@code uri} if the request method invalidates. */
-  void maybeRemove(String requestMethod, URI uri) throws IOException;
-
-  /**
-   * Handles a conditional request hit by updating the stored cache response
-   * with the headers from {@code httpConnection}. The cached response body is
-   * not updated. If the stored response has changed since {@code
-   * conditionalCacheHit} was returned, this does nothing.
-   */
-  void update(CacheResponse conditionalCacheHit, HttpURLConnection connection) throws IOException;
-
-  /** Track an conditional GET that was satisfied by this cache. */
-  void trackConditionalCacheHit();
-
-  /** Track an HTTP response being satisfied by {@code source}. */
-  void trackResponse(ResponseSource source);
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/Request.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/Request.java b/framework/src/com/squareup/okhttp/Request.java
deleted file mode 100755
index f95303e..0000000
--- a/framework/src/com/squareup/okhttp/Request.java
+++ /dev/null
@@ -1,284 +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 com.squareup.okhttp.internal.http.RawHeaders;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-import java.util.Set;
-
-/**
- * An HTTP request. Instances of this class are immutable if their {@link #body}
- * is null or itself immutable.
- *
- * <h3>Warning: Experimental OkHttp 2.0 API</h3>
- * This class is in beta. APIs are subject to change!
- */
-/* OkHttp 2.0: public */ final class Request {
-  private final URL url;
-  private final String method;
-  private final RawHeaders headers;
-  private final Body body;
-  private final Object tag;
-
-  private Request(Builder builder) {
-    this.url = builder.url;
-    this.method = builder.method;
-    this.headers = new RawHeaders(builder.headers);
-    this.body = builder.body;
-    this.tag = builder.tag != null ? builder.tag : this;
-  }
-
-  public URL url() {
-    return url;
-  }
-
-  public String urlString() {
-    return url.toString();
-  }
-
-  public String method() {
-    return method;
-  }
-
-  public String header(String name) {
-    return headers.get(name);
-  }
-
-  public List<String> headers(String name) {
-    return headers.values(name);
-  }
-
-  public Set<String> headerNames() {
-    return headers.names();
-  }
-
-  RawHeaders rawHeaders() {
-    return new RawHeaders(headers);
-  }
-
-  public int headerCount() {
-    return headers.length();
-  }
-
-  public String headerName(int index) {
-    return headers.getFieldName(index);
-  }
-
-  public String headerValue(int index) {
-    return headers.getValue(index);
-  }
-
-  public Body body() {
-    return body;
-  }
-
-  public Object tag() {
-    return tag;
-  }
-
-  Builder newBuilder() {
-    return new Builder(url)
-        .method(method, body)
-        .rawHeaders(headers)
-        .tag(tag);
-  }
-
-  public abstract static class Body {
-    /** Returns the Content-Type header for this body. */
-    public abstract MediaType contentType();
-
-    /**
-     * Returns the number of bytes that will be written to {@code out} in a call
-     * to {@link #writeTo}, or -1 if that count is unknown.
-     */
-    public long contentLength() {
-      return -1;
-    }
-
-    /** Writes the content of this request to {@code out}. */
-    public abstract void writeTo(OutputStream out) throws IOException;
-
-    /**
-     * Returns a new request body that transmits {@code content}. If {@code
-     * contentType} lacks a charset, this will use UTF-8.
-     */
-    public static Body create(MediaType contentType, String content) {
-      contentType = contentType.charset() != null
-          ? contentType
-          : MediaType.parse(contentType + "; charset=utf-8");
-      try {
-        byte[] bytes = content.getBytes(contentType.charset().name());
-        return create(contentType, bytes);
-      } catch (UnsupportedEncodingException e) {
-        throw new AssertionError();
-      }
-    }
-
-    /** Returns a new request body that transmits {@code content}. */
-    public static Body create(final MediaType contentType, final byte[] content) {
-      if (contentType == null) throw new NullPointerException("contentType == null");
-      if (content == null) throw new NullPointerException("content == null");
-
-      return new Body() {
-        @Override public MediaType contentType() {
-          return contentType;
-        }
-
-        @Override public long contentLength() {
-          return content.length;
-        }
-
-        @Override public void writeTo(OutputStream out) throws IOException {
-          out.write(content);
-        }
-      };
-    }
-
-    /** Returns a new request body that transmits the content of {@code file}. */
-    public static Body create(final MediaType contentType, final File file) {
-      if (contentType == null) throw new NullPointerException("contentType == null");
-      if (file == null) throw new NullPointerException("content == null");
-
-      return new Body() {
-        @Override public MediaType contentType() {
-          return contentType;
-        }
-
-        @Override public long contentLength() {
-          return file.length();
-        }
-
-        @Override public void writeTo(OutputStream out) throws IOException {
-          long length = contentLength();
-          if (length == 0) return;
-
-          InputStream in = null;
-          try {
-            in = new FileInputStream(file);
-            byte[] buffer = new byte[(int) Math.min(8192, length)];
-            for (int c; (c = in.read(buffer)) != -1; ) {
-              out.write(buffer, 0, c);
-            }
-          } finally {
-            Util.closeQuietly(in);
-          }
-        }
-      };
-    }
-  }
-
-  public static class Builder {
-    private URL url;
-    private String method = "GET";
-    private RawHeaders headers = new RawHeaders();
-    private Body body;
-    private Object tag;
-
-    public Builder(String url) {
-      url(url);
-    }
-
-    public Builder(URL url) {
-      url(url);
-    }
-
-    public Builder url(String url) {
-      try {
-        this.url = new URL(url);
-        return this;
-      } catch (MalformedURLException e) {
-        throw new IllegalArgumentException("Malformed URL: " + url);
-      }
-    }
-
-    public Builder url(URL url) {
-      if (url == null) throw new IllegalStateException("url == null");
-      this.url = url;
-      return this;
-    }
-
-    /**
-     * Sets the header named {@code name} to {@code value}. If this request
-     * already has any headers with that name, they are all replaced.
-     */
-    public Builder header(String name, String value) {
-      headers.set(name, value);
-      return this;
-    }
-
-    /**
-     * Adds a header with {@code name} and {@code value}. Prefer this method for
-     * multiply-valued headers like "Cookie".
-     */
-    public Builder addHeader(String name, String value) {
-      headers.add(name, value);
-      return this;
-    }
-
-    Builder rawHeaders(RawHeaders rawHeaders) {
-      headers = new RawHeaders(rawHeaders);
-      return this;
-    }
-
-    public Builder get() {
-      return method("GET", null);
-    }
-
-    public Builder head() {
-      return method("HEAD", null);
-    }
-
-    public Builder post(Body body) {
-      return method("POST", body);
-    }
-
-    public Builder put(Body body) {
-      return method("PUT", body);
-    }
-
-    public Builder method(String method, Body body) {
-      if (method == null || method.length() == 0) {
-        throw new IllegalArgumentException("method == null || method.length() == 0");
-      }
-      this.method = method;
-      this.body = body;
-      return this;
-    }
-
-    /**
-     * Attaches {@code tag} to the request. It can be used later to cancel the
-     * request. If the tag is unspecified or null, the request is canceled by
-     * using the request itself as the tag.
-     */
-    public Builder tag(Object tag) {
-      this.tag = tag;
-      return this;
-    }
-
-    public Request build() {
-      return new Request(this);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/Response.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/Response.java b/framework/src/com/squareup/okhttp/Response.java
deleted file mode 100755
index 1e67968..0000000
--- a/framework/src/com/squareup/okhttp/Response.java
+++ /dev/null
@@ -1,290 +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 com.squareup.okhttp.internal.http.RawHeaders;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.Charset;
-import java.util.List;
-import java.util.Set;
-
-import static com.squareup.okhttp.internal.Util.UTF_8;
-
-/**
- * An HTTP response. Instances of this class are not immutable: the response
- * body is a one-shot value that may be consumed only once. All other properties
- * are immutable.
- *
- * <h3>Warning: Experimental OkHttp 2.0 API</h3>
- * This class is in beta. APIs are subject to change!
- */
-/* OkHttp 2.0: public */ final class Response {
-  private final Request request;
-  private final int code;
-  private final RawHeaders headers;
-  private final Body body;
-  private final Response redirectedBy;
-
-  private Response(Builder builder) {
-    this.request = builder.request;
-    this.code = builder.code;
-    this.headers = new RawHeaders(builder.headers);
-    this.body = builder.body;
-    this.redirectedBy = builder.redirectedBy;
-  }
-
-  /**
-   * The wire-level request that initiated this HTTP response. This is usually
-   * <strong>not</strong> the same request instance provided to the HTTP client:
-   * <ul>
-   *     <li>It may be transformed by the HTTP client. For example, the client
-   *         may have added its own {@code Content-Encoding} header to enable
-   *         response compression.
-   *     <li>It may be the request generated in response to an HTTP redirect.
-   *         In this case the request URL may be different than the initial
-   *         request URL.
-   * </ul>
-   */
-  public Request request() {
-    return request;
-  }
-
-  public int code() {
-    return code;
-  }
-
-  public String header(String name) {
-    return header(name, null);
-  }
-
-  public String header(String name, String defaultValue) {
-    String result = headers.get(name);
-    return result != null ? result : defaultValue;
-  }
-
-  public List<String> headers(String name) {
-    return headers.values(name);
-  }
-
-  public Set<String> headerNames() {
-    return headers.names();
-  }
-
-  public int headerCount() {
-    return headers.length();
-  }
-
-  public String headerName(int index) {
-    return headers.getFieldName(index);
-  }
-
-  RawHeaders rawHeaders() {
-    return new RawHeaders(headers);
-  }
-
-  public String headerValue(int index) {
-    return headers.getValue(index);
-  }
-
-  public Body body() {
-    return body;
-  }
-
-  /**
-   * Returns the response for the HTTP redirect that triggered this response, or
-   * null if this response wasn't triggered by an automatic redirect. The body
-   * of the returned response should not be read because it has already been
-   * consumed by the redirecting client.
-   */
-  public Response redirectedBy() {
-    return redirectedBy;
-  }
-
-  public abstract static class Body {
-    /** Multiple calls to {@link #charStream()} must return the same instance. */
-    private Reader reader;
-
-    /**
-     * Returns true if further data from this response body should be read at
-     * this time. For asynchronous transports like SPDY and HTTP/2.0, this will
-     * return false once all locally-available body bytes have been read.
-     *
-     * <p>Clients with many concurrent downloads can use this method to reduce
-     * the number of idle threads blocking on reads. See {@link
-     * Receiver#onResponse} for details.
-     */
-    // <h3>Body.ready() vs. InputStream.available()</h3>
-    // TODO: Can we fix response bodies to implement InputStream.available well?
-    // The deflater implementation is broken by default but we could do better.
-    public abstract boolean ready() throws IOException;
-
-    public abstract MediaType contentType();
-
-    /**
-     * Returns the number of bytes in that will returned by {@link #bytes}, or
-     * {@link #byteStream}, or -1 if unknown.
-     */
-    public abstract long contentLength();
-
-    public abstract InputStream byteStream() throws IOException;
-
-    public final byte[] bytes() throws IOException {
-      long contentLength = contentLength();
-      if (contentLength > Integer.MAX_VALUE) {
-        throw new IOException("Cannot buffer entire body for content length: " + contentLength);
-      }
-
-      if (contentLength != -1) {
-        byte[] content = new byte[(int) contentLength];
-        InputStream in = byteStream();
-        Util.readFully(in, content);
-        if (in.read() != -1) throw new IOException("Content-Length and stream length disagree");
-        return content;
-
-      } else {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        Util.copy(byteStream(), out);
-        return out.toByteArray();
-      }
-    }
-
-    /**
-     * Returns the response as a character stream decoded with the charset
-     * of the Content-Type header. If that header is either absent or lacks a
-     * charset, this will attempt to decode the response body as UTF-8.
-     */
-    public final Reader charStream() throws IOException {
-      if (reader == null) {
-        reader = new InputStreamReader(byteStream(), charset());
-      }
-      return reader;
-    }
-
-    /**
-     * Returns the response as a string decoded with the charset of the
-     * Content-Type header. If that header is either absent or lacks a charset,
-     * this will attempt to decode the response body as UTF-8.
-     */
-    public final String string() throws IOException {
-      return new String(bytes(), charset().name());
-    }
-
-    private Charset charset() {
-      MediaType contentType = contentType();
-      return contentType != null ? contentType.charset(UTF_8) : UTF_8;
-    }
-  }
-
-  public interface Receiver {
-    /**
-     * Called 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.
-     */
-    void onFailure(Failure failure);
-
-    /**
-     * Called when the HTTP response was successfully returned by the remote
-     * server. The receiver may proceed to read the response body with the
-     * response's {@link #body} method.
-     *
-     * <p>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.
-     *
-     * <h3>Non-blocking responses</h3>
-     *
-     * <p>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
-     * Body#ready} to check if bytes should be read immediately. While there is
-     * data ready, read it. If there isn't, return false: receivers will be
-     * called back with {@code onResponse()} as additional data is downloaded.
-     *
-     * <p>Return true to indicate that the receiver has finished handling the
-     * response body. If the response body has unread data, it will be
-     * discarded.
-     *
-     * <p>When the response body has been fully consumed the returned value is
-     * undefined.
-     *
-     * <p>The current implementation of {@link 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 SPDY or
-     * HTTP/2.
-     */
-    boolean onResponse(Response response) throws IOException;
-  }
-
-  public static class Builder {
-    private final Request request;
-    private final int code;
-    private RawHeaders headers = new RawHeaders();
-    private Body body;
-    private Response redirectedBy;
-
-    public Builder(Request request, int code) {
-      if (request == null) throw new IllegalArgumentException("request == null");
-      if (code <= 0) throw new IllegalArgumentException("code <= 0");
-      this.request = request;
-      this.code = code;
-    }
-
-    /**
-     * Sets the header named {@code name} to {@code value}. If this request
-     * already has any headers with that name, they are all replaced.
-     */
-    public Builder header(String name, String value) {
-      headers.set(name, value);
-      return this;
-    }
-
-    /**
-     * Adds a header with {@code name} and {@code value}. Prefer this method for
-     * multiply-valued headers like "Set-Cookie".
-     */
-    public Builder addHeader(String name, String value) {
-      headers.add(name, value);
-      return this;
-    }
-
-    Builder rawHeaders(RawHeaders rawHeaders) {
-      headers = new RawHeaders(rawHeaders);
-      return this;
-    }
-
-    public Builder body(Body body) {
-      this.body = body;
-      return this;
-    }
-
-    public Builder redirectedBy(Response redirectedBy) {
-      this.redirectedBy = redirectedBy;
-      return this;
-    }
-
-    public Response build() {
-      if (request == null) throw new IllegalStateException("Response has no request.");
-      if (code == -1) throw new IllegalStateException("Response has no code.");
-      return new Response(this);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/ResponseSource.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/ResponseSource.java b/framework/src/com/squareup/okhttp/ResponseSource.java
deleted file mode 100755
index 4eca172..0000000
--- a/framework/src/com/squareup/okhttp/ResponseSource.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * 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;
-
-/** The source of an HTTP response. */
-public enum ResponseSource {
-
-  /** The response was returned from the local cache. */
-  CACHE,
-
-  /**
-   * The response is available in the cache but must be validated with the
-   * network. The cache result will be used if it is still valid; otherwise
-   * the network's response will be used.
-   */
-  CONDITIONAL_CACHE,
-
-  /** The response was returned from the network. */
-  NETWORK;
-
-  public boolean requiresConnection() {
-    return this == CONDITIONAL_CACHE || this == NETWORK;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/Route.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/Route.java b/framework/src/com/squareup/okhttp/Route.java
deleted file mode 100755
index 4b8786d..0000000
--- a/framework/src/com/squareup/okhttp/Route.java
+++ /dev/null
@@ -1,91 +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 java.net.InetSocketAddress;
-import java.net.Proxy;
-
-/** Represents the route used by a connection to reach an endpoint. */
-public class Route {
-  final Address address;
-  final Proxy proxy;
-  final InetSocketAddress inetSocketAddress;
-  final boolean modernTls;
-
-  public Route(Address address, Proxy proxy, InetSocketAddress inetSocketAddress,
-      boolean modernTls) {
-    if (address == null) throw new NullPointerException("address == null");
-    if (proxy == null) throw new NullPointerException("proxy == null");
-    if (inetSocketAddress == null) throw new NullPointerException("inetSocketAddress == null");
-    this.address = address;
-    this.proxy = proxy;
-    this.inetSocketAddress = inetSocketAddress;
-    this.modernTls = modernTls;
-  }
-
-  /** Returns the {@link Address} of this route. */
-  public Address getAddress() {
-    return address;
-  }
-
-  /**
-   * Returns the {@link Proxy} of this route.
-   *
-   * <strong>Warning:</strong> This may be different than the proxy returned
-   * by {@link #getAddress}! That is the proxy that the user asked to be
-   * connected to; this returns the proxy that they were actually connected
-   * to. The two may disagree when a proxy selector selects a different proxy
-   * for a connection.
-   */
-  public Proxy getProxy() {
-    return proxy;
-  }
-
-  /** Returns the {@link InetSocketAddress} of this route. */
-  public InetSocketAddress getSocketAddress() {
-    return inetSocketAddress;
-  }
-
-  /** Returns true if this route uses modern TLS. */
-  public boolean isModernTls() {
-    return modernTls;
-  }
-
-  /** Returns a copy of this route with flipped TLS mode. */
-  Route flipTlsMode() {
-    return new Route(address, proxy, inetSocketAddress, !modernTls);
-  }
-
-  @Override public boolean equals(Object obj) {
-    if (obj instanceof Route) {
-      Route other = (Route) obj;
-      return (address.equals(other.address)
-          && proxy.equals(other.proxy)
-          && inetSocketAddress.equals(other.inetSocketAddress)
-          && modernTls == other.modernTls);
-    }
-    return false;
-  }
-
-  @Override public int hashCode() {
-    int result = 17;
-    result = 31 * result + address.hashCode();
-    result = 31 * result + proxy.hashCode();
-    result = 31 * result + inetSocketAddress.hashCode();
-    result = result + (modernTls ? (31 * result) : 0);
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/RouteDatabase.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/RouteDatabase.java b/framework/src/com/squareup/okhttp/RouteDatabase.java
deleted file mode 100755
index 9cbeaa7..0000000
--- a/framework/src/com/squareup/okhttp/RouteDatabase.java
+++ /dev/null
@@ -1,57 +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 java.io.IOException;
-import java.util.LinkedHashSet;
-import java.util.Set;
-import javax.net.ssl.SSLHandshakeException;
-
-/**
- * A blacklist of failed routes to avoid when creating a new connection to a
- * target address. This is used so that OkHttp can learn from its mistakes: if
- * there was a failure attempting to connect to a specific IP address, proxy
- * server or TLS mode, that failure is remembered and alternate routes are
- * preferred.
- */
-public final class RouteDatabase {
-  private final Set<Route> failedRoutes = new LinkedHashSet<Route>();
-
-  /** Records a failure connecting to {@code failedRoute}. */
-  public synchronized void failed(Route failedRoute, IOException failure) {
-    failedRoutes.add(failedRoute);
-
-    if (!(failure instanceof SSLHandshakeException)) {
-      // If the problem was not related to SSL then it will also fail with
-      // a different TLS mode therefore we can be proactive about it.
-      failedRoutes.add(failedRoute.flipTlsMode());
-    }
-  }
-
-  /** Records success connecting to {@code failedRoute}. */
-  public synchronized void connected(Route route) {
-    failedRoutes.remove(route);
-  }
-
-  /** Returns true if {@code route} has failed recently and should be avoided. */
-  public synchronized boolean shouldPostpone(Route route) {
-    return failedRoutes.contains(route);
-  }
-
-  public synchronized int failedRoutesCount() {
-    return failedRoutes.size();
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/TunnelRequest.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/TunnelRequest.java b/framework/src/com/squareup/okhttp/TunnelRequest.java
deleted file mode 100755
index 5260b87..0000000
--- a/framework/src/com/squareup/okhttp/TunnelRequest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * 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.http.RawHeaders;
-
-import static com.squareup.okhttp.internal.Util.getDefaultPort;
-
-/**
- * Routing and authentication information sent to an HTTP proxy to create a
- * HTTPS to an origin server. Everything in the tunnel request is sent
- * unencrypted to the proxy server.
- *
- * <p>See <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817, Section
- * 5.2</a>.
- */
-public final class TunnelRequest {
-  final String host;
-  final int port;
-  final String userAgent;
-  final String proxyAuthorization;
-
-  /**
-   * @param host the origin server's hostname. Not null.
-   * @param port the origin server's port, like 80 or 443.
-   * @param userAgent the client's user-agent. Not null.
-   * @param proxyAuthorization proxy authorization, or null if the proxy is
-   * used without an authorization header.
-   */
-  public TunnelRequest(String host, int port, String userAgent, String proxyAuthorization) {
-    if (host == null) throw new NullPointerException("host == null");
-    if (userAgent == null) throw new NullPointerException("userAgent == null");
-    this.host = host;
-    this.port = port;
-    this.userAgent = userAgent;
-    this.proxyAuthorization = proxyAuthorization;
-  }
-
-  /**
-   * If we're creating a TLS tunnel, send only the minimum set of headers.
-   * This avoids sending potentially sensitive data like HTTP cookies to
-   * the proxy unencrypted.
-   */
-  RawHeaders getRequestHeaders() {
-    RawHeaders result = new RawHeaders();
-    result.setRequestLine("CONNECT " + host + ":" + port + " HTTP/1.1");
-
-    // Always set Host and User-Agent.
-    result.set("Host", port == getDefaultPort("https") ? host : (host + ":" + port));
-    result.set("User-Agent", userAgent);
-
-    // Copy over the Proxy-Authorization header if it exists.
-    if (proxyAuthorization != null) {
-      result.set("Proxy-Authorization", proxyAuthorization);
-    }
-
-    // Always set the Proxy-Connection to Keep-Alive for the benefit of
-    // HTTP/1.0 proxies like Squid.
-    result.set("Proxy-Connection", "Keep-Alive");
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/internal/AbstractOutputStream.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/internal/AbstractOutputStream.java b/framework/src/com/squareup/okhttp/internal/AbstractOutputStream.java
deleted file mode 100755
index 78c9691..0000000
--- a/framework/src/com/squareup/okhttp/internal/AbstractOutputStream.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * 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.internal;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * An output stream for an HTTP request body.
- *
- * <p>Since a single socket's output stream may be used to write multiple HTTP
- * requests to the same server, subclasses should not close the socket stream.
- */
-public abstract class AbstractOutputStream extends OutputStream {
-  protected boolean closed;
-
-  @Override public final void write(int data) throws IOException {
-    write(new byte[] { (byte) data });
-  }
-
-  protected final void checkNotClosed() throws IOException {
-    if (closed) {
-      throw new IOException("stream closed");
-    }
-  }
-
-  /** Returns true if this stream was closed locally. */
-  public boolean isClosed() {
-    return closed;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/internal/Base64.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/internal/Base64.java b/framework/src/com/squareup/okhttp/internal/Base64.java
deleted file mode 100755
index 79cd020..0000000
--- a/framework/src/com/squareup/okhttp/internal/Base64.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- */
-
-/**
- * @author Alexander Y. Kleymenov
- */
-
-package com.squareup.okhttp.internal;
-
-import java.io.UnsupportedEncodingException;
-
-import static com.squareup.okhttp.internal.Util.EMPTY_BYTE_ARRAY;
-
-/**
- * <a href="http://www.ietf.org/rfc/rfc2045.txt">Base64</a> encoder/decoder.
- * In violation of the RFC, this encoder doesn't wrap lines at 76 columns.
- */
-public final class Base64 {
-  private Base64() {
-  }
-
-  public static byte[] decode(byte[] in) {
-    return decode(in, in.length);
-  }
-
-  public static byte[] decode(byte[] in, int len) {
-    // approximate output length
-    int length = len / 4 * 3;
-    // return an empty array on empty or short input without padding
-    if (length == 0) {
-      return EMPTY_BYTE_ARRAY;
-    }
-    // temporary array
-    byte[] out = new byte[length];
-    // number of padding characters ('=')
-    int pad = 0;
-    byte chr;
-    // compute the number of the padding characters
-    // and adjust the length of the input
-    for (; ; len--) {
-      chr = in[len - 1];
-      // skip the neutral characters
-      if ((chr == '\n') || (chr == '\r') || (chr == ' ') || (chr == '\t')) {
-        continue;
-      }
-      if (chr == '=') {
-        pad++;
-      } else {
-        break;
-      }
-    }
-    // index in the output array
-    int outIndex = 0;
-    // index in the input array
-    int inIndex = 0;
-    // holds the value of the input character
-    int bits = 0;
-    // holds the value of the input quantum
-    int quantum = 0;
-    for (int i = 0; i < len; i++) {
-      chr = in[i];
-      // skip the neutral characters
-      if ((chr == '\n') || (chr == '\r') || (chr == ' ') || (chr == '\t')) {
-        continue;
-      }
-      if ((chr >= 'A') && (chr <= 'Z')) {
-        // char ASCII value
-        //  A    65    0
-        //  Z    90    25 (ASCII - 65)
-        bits = chr - 65;
-      } else if ((chr >= 'a') && (chr <= 'z')) {
-        // char ASCII value
-        //  a    97    26
-        //  z    122   51 (ASCII - 71)
-        bits = chr - 71;
-      } else if ((chr >= '0') && (chr <= '9')) {
-        // char ASCII value
-        //  0    48    52
-        //  9    57    61 (ASCII + 4)
-        bits = chr + 4;
-      } else if (chr == '+') {
-        bits = 62;
-      } else if (chr == '/') {
-        bits = 63;
-      } else {
-        return null;
-      }
-      // append the value to the quantum
-      quantum = (quantum << 6) | (byte) bits;
-      if (inIndex % 4 == 3) {
-        // 4 characters were read, so make the output:
-        out[outIndex++] = (byte) (quantum >> 16);
-        out[outIndex++] = (byte) (quantum >> 8);
-        out[outIndex++] = (byte) quantum;
-      }
-      inIndex++;
-    }
-    if (pad > 0) {
-      // adjust the quantum value according to the padding
-      quantum = quantum << (6 * pad);
-      // make output
-      out[outIndex++] = (byte) (quantum >> 16);
-      if (pad == 1) {
-        out[outIndex++] = (byte) (quantum >> 8);
-      }
-    }
-    // create the resulting array
-    byte[] result = new byte[outIndex];
-    System.arraycopy(out, 0, result, 0, outIndex);
-    return result;
-  }
-
-  private static final byte[] MAP = new byte[] {
-      'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
-      'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
-      'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4',
-      '5', '6', '7', '8', '9', '+', '/'
-  };
-
-  public static String encode(byte[] in) {
-    int length = (in.length + 2) * 4 / 3;
-    byte[] out = new byte[length];
-    int index = 0, end = in.length - in.length % 3;
-    for (int i = 0; i < end; i += 3) {
-      out[index++] = MAP[(in[i] & 0xff) >> 2];
-      out[index++] = MAP[((in[i] & 0x03) << 4) | ((in[i + 1] & 0xff) >> 4)];
-      out[index++] = MAP[((in[i + 1] & 0x0f) << 2) | ((in[i + 2] & 0xff) >> 6)];
-      out[index++] = MAP[(in[i + 2] & 0x3f)];
-    }
-    switch (in.length % 3) {
-      case 1:
-        out[index++] = MAP[(in[end] & 0xff) >> 2];
-        out[index++] = MAP[(in[end] & 0x03) << 4];
-        out[index++] = '=';
-        out[index++] = '=';
-        break;
-      case 2:
-        out[index++] = MAP[(in[end] & 0xff) >> 2];
-        out[index++] = MAP[((in[end] & 0x03) << 4) | ((in[end + 1] & 0xff) >> 4)];
-        out[index++] = MAP[((in[end + 1] & 0x0f) << 2)];
-        out[index++] = '=';
-        break;
-    }
-    try {
-      return new String(out, 0, index, "US-ASCII");
-    } catch (UnsupportedEncodingException e) {
-      throw new AssertionError(e);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/internal/DiskLruCache.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/internal/DiskLruCache.java b/framework/src/com/squareup/okhttp/internal/DiskLruCache.java
deleted file mode 100755
index f7fcb1e..0000000
--- a/framework/src/com/squareup/okhttp/internal/DiskLruCache.java
+++ /dev/null
@@ -1,926 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * 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.internal;
-
-import java.io.BufferedWriter;
-import java.io.Closeable;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A cache that uses a bounded amount of space on a filesystem. Each cache
- * entry has a string key and a fixed number of values. Each key must match
- * the regex <strong>[a-z0-9_-]{1,64}</strong>. Values are byte sequences,
- * accessible as streams or files. Each value must be between {@code 0} and
- * {@code Integer.MAX_VALUE} bytes in length.
- *
- * <p>The cache stores its data in a directory on the filesystem. This
- * directory must be exclusive to the cache; the cache may delete or overwrite
- * files from its directory. It is an error for multiple processes to use the
- * same cache directory at the same time.
- *
- * <p>This cache limits the number of bytes that it will store on the
- * filesystem. When the number of stored bytes exceeds the limit, the cache will
- * remove entries in the background until the limit is satisfied. The limit is
- * not strict: the cache may temporarily exceed it while waiting for files to be
- * deleted. The limit does not include filesystem overhead or the cache
- * journal so space-sensitive applications should set a conservative limit.
- *
- * <p>Clients call {@link #edit} to create or update the values of an entry. An
- * entry may have only one editor at one time; if a value is not available to be
- * edited then {@link #edit} will return null.
- * <ul>
- *     <li>When an entry is being <strong>created</strong> it is necessary to
- *         supply a full set of values; the empty value should be used as a
- *         placeholder if necessary.
- *     <li>When an entry is being <strong>edited</strong>, it is not necessary
- *         to supply data for every value; values default to their previous
- *         value.
- * </ul>
- * Every {@link #edit} call must be matched by a call to {@link Editor#commit}
- * or {@link Editor#abort}. Committing is atomic: a read observes the full set
- * of values as they were before or after the commit, but never a mix of values.
- *
- * <p>Clients call {@link #get} to read a snapshot of an entry. The read will
- * observe the value at the time that {@link #get} was called. Updates and
- * removals after the call do not impact ongoing reads.
- *
- * <p>This class is tolerant of some I/O errors. If files are missing from the
- * filesystem, the corresponding entries will be dropped from the cache. If
- * an error occurs while writing a cache value, the edit will fail silently.
- * Callers should handle other problems by catching {@code IOException} and
- * responding appropriately.
- */
-public final class DiskLruCache implements Closeable {
-  static final String JOURNAL_FILE = "journal";
-  static final String JOURNAL_FILE_TEMP = "journal.tmp";
-  static final String JOURNAL_FILE_BACKUP = "journal.bkp";
-  static final String MAGIC = "libcore.io.DiskLruCache";
-  static final String VERSION_1 = "1";
-  static final long ANY_SEQUENCE_NUMBER = -1;
-  static final Pattern LEGAL_KEY_PATTERN = Pattern.compile("[a-z0-9_-]{1,64}");
-  private static final String CLEAN = "CLEAN";
-  private static final String DIRTY = "DIRTY";
-  private static final String REMOVE = "REMOVE";
-  private static final String READ = "READ";
-
-    /*
-     * This cache uses a journal file named "journal". A typical journal file
-     * looks like this:
-     *     libcore.io.DiskLruCache
-     *     1
-     *     100
-     *     2
-     *
-     *     CLEAN 3400330d1dfc7f3f7f4b8d4d803dfcf6 832 21054
-     *     DIRTY 335c4c6028171cfddfbaae1a9c313c52
-     *     CLEAN 335c4c6028171cfddfbaae1a9c313c52 3934 2342
-     *     REMOVE 335c4c6028171cfddfbaae1a9c313c52
-     *     DIRTY 1ab96a171faeeee38496d8b330771a7a
-     *     CLEAN 1ab96a171faeeee38496d8b330771a7a 1600 234
-     *     READ 335c4c6028171cfddfbaae1a9c313c52
-     *     READ 3400330d1dfc7f3f7f4b8d4d803dfcf6
-     *
-     * The first five lines of the journal form its header. They are the
-     * constant string "libcore.io.DiskLruCache", the disk cache's version,
-     * the application's version, the value count, and a blank line.
-     *
-     * Each of the subsequent lines in the file is a record of the state of a
-     * cache entry. Each line contains space-separated values: a state, a key,
-     * and optional state-specific values.
-     *   o DIRTY lines track that an entry is actively being created or updated.
-     *     Every successful DIRTY action should be followed by a CLEAN or REMOVE
-     *     action. DIRTY lines without a matching CLEAN or REMOVE indicate that
-     *     temporary files may need to be deleted.
-     *   o CLEAN lines track a cache entry that has been successfully published
-     *     and may be read. A publish line is followed by the lengths of each of
-     *     its values.
-     *   o READ lines track accesses for LRU.
-     *   o REMOVE lines track entries that have been deleted.
-     *
-     * The journal file is appended to as cache operations occur. The journal may
-     * occasionally be compacted by dropping redundant lines. A temporary file named
-     * "journal.tmp" will be used during compaction; that file should be deleted if
-     * it exists when the cache is opened.
-     */
-
-  private final File directory;
-  private final File journalFile;
-  private final File journalFileTmp;
-  private final File journalFileBackup;
-  private final int appVersion;
-  private long maxSize;
-  private final int valueCount;
-  private long size = 0;
-  private Writer journalWriter;
-  private final LinkedHashMap<String, Entry> lruEntries =
-      new LinkedHashMap<String, Entry>(0, 0.75f, true);
-  private int redundantOpCount;
-
-  /**
-   * To differentiate between old and current snapshots, each entry is given
-   * a sequence number each time an edit is committed. A snapshot is stale if
-   * its sequence number is not equal to its entry's sequence number.
-   */
-  private long nextSequenceNumber = 0;
-
-  /** This cache uses a single background thread to evict entries. */
-  final ThreadPoolExecutor executorService =
-      new ThreadPoolExecutor(0, 1, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
-  private final Callable<Void> cleanupCallable = new Callable<Void>() {
-    public Void call() throws Exception {
-      synchronized (DiskLruCache.this) {
-        if (journalWriter == null) {
-          return null; // Closed.
-        }
-        trimToSize();
-        if (journalRebuildRequired()) {
-          rebuildJournal();
-          redundantOpCount = 0;
-        }
-      }
-      return null;
-    }
-  };
-
-  private DiskLruCache(File directory, int appVersion, int valueCount, long maxSize) {
-    this.directory = directory;
-    this.appVersion = appVersion;
-    this.journalFile = new File(directory, JOURNAL_FILE);
-    this.journalFileTmp = new File(directory, JOURNAL_FILE_TEMP);
-    this.journalFileBackup = new File(directory, JOURNAL_FILE_BACKUP);
-    this.valueCount = valueCount;
-    this.maxSize = maxSize;
-  }
-
-  /**
-   * Opens the cache in {@code directory}, creating a cache if none exists
-   * there.
-   *
-   * @param directory a writable directory
-   * @param valueCount the number of values per cache entry. Must be positive.
-   * @param maxSize the maximum number of bytes this cache should use to store
-   * @throws IOException if reading or writing the cache directory fails
-   */
-  public static DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize)
-      throws IOException {
-    if (maxSize <= 0) {
-      throw new IllegalArgumentException("maxSize <= 0");
-    }
-    if (valueCount <= 0) {
-      throw new IllegalArgumentException("valueCount <= 0");
-    }
-
-    // If a bkp file exists, use it instead.
-    File backupFile = new File(directory, JOURNAL_FILE_BACKUP);
-    if (backupFile.exists()) {
-      File journalFile = new File(directory, JOURNAL_FILE);
-      // If journal file also exists just delete backup file.
-      if (journalFile.exists()) {
-        backupFile.delete();
-      } else {
-        renameTo(backupFile, journalFile, false);
-      }
-    }
-
-    // Prefer to pick up where we left off.
-    DiskLruCache cache = new DiskLruCache(directory, appVersion, valueCount, maxSize);
-    if (cache.journalFile.exists()) {
-      try {
-        cache.readJournal();
-        cache.processJournal();
-        cache.journalWriter = new BufferedWriter(
-            new OutputStreamWriter(new FileOutputStream(cache.journalFile, true), Util.US_ASCII));
-        return cache;
-      } catch (IOException journalIsCorrupt) {
-        Platform.get().logW("DiskLruCache " + directory + " is corrupt: "
-            + journalIsCorrupt.getMessage() + ", removing");
-        cache.delete();
-      }
-    }
-
-    // Create a new empty cache.
-    directory.mkdirs();
-    cache = new DiskLruCache(directory, appVersion, valueCount, maxSize);
-    cache.rebuildJournal();
-    return cache;
-  }
-
-  private void readJournal() throws IOException {
-    StrictLineReader reader = new StrictLineReader(new FileInputStream(journalFile), Util.US_ASCII);
-    try {
-      String magic = reader.readLine();
-      String version = reader.readLine();
-      String appVersionString = reader.readLine();
-      String valueCountString = reader.readLine();
-      String blank = reader.readLine();
-      if (!MAGIC.equals(magic)
-          || !VERSION_1.equals(version)
-          || !Integer.toString(appVersion).equals(appVersionString)
-          || !Integer.toString(valueCount).equals(valueCountString)
-          || !"".equals(blank)) {
-        throw new IOException("unexpected journal header: [" + magic + ", " + version + ", "
-            + valueCountString + ", " + blank + "]");
-      }
-
-      int lineCount = 0;
-      while (true) {
-        try {
-          readJournalLine(reader.readLine());
-          lineCount++;
-        } catch (EOFException endOfJournal) {
-          break;
-        }
-      }
-      redundantOpCount = lineCount - lruEntries.size();
-    } finally {
-      Util.closeQuietly(reader);
-    }
-  }
-
-  private void readJournalLine(String line) throws IOException {
-    int firstSpace = line.indexOf(' ');
-    if (firstSpace == -1) {
-      throw new IOException("unexpected journal line: " + line);
-    }
-
-    int keyBegin = firstSpace + 1;
-    int secondSpace = line.indexOf(' ', keyBegin);
-    final String key;
-    if (secondSpace == -1) {
-      key = line.substring(keyBegin);
-      if (firstSpace == REMOVE.length() && line.startsWith(REMOVE)) {
-        lruEntries.remove(key);
-        return;
-      }
-    } else {
-      key = line.substring(keyBegin, secondSpace);
-    }
-
-    Entry entry = lruEntries.get(key);
-    if (entry == null) {
-      entry = new Entry(key);
-      lruEntries.put(key, entry);
-    }
-
-    if (secondSpace != -1 && firstSpace == CLEAN.length() && line.startsWith(CLEAN)) {
-      String[] parts = line.substring(secondSpace + 1).split(" ");
-      entry.readable = true;
-      entry.currentEditor = null;
-      entry.setLengths(parts);
-    } else if (secondSpace == -1 && firstSpace == DIRTY.length() && line.startsWith(DIRTY)) {
-      entry.currentEditor = new Editor(entry);
-    } else if (secondSpace == -1 && firstSpace == READ.length() && line.startsWith(READ)) {
-      // This work was already done by calling lruEntries.get().
-    } else {
-      throw new IOException("unexpected journal line: " + line);
-    }
-  }
-
-  /**
-   * Computes the initial size and collects garbage as a part of opening the
-   * cache. Dirty entries are assumed to be inconsistent and will be deleted.
-   */
-  private void processJournal() throws IOException {
-    deleteIfExists(journalFileTmp);
-    for (Iterator<Entry> i = lruEntries.values().iterator(); i.hasNext(); ) {
-      Entry entry = i.next();
-      if (entry.currentEditor == null) {
-        for (int t = 0; t < valueCount; t++) {
-          size += entry.lengths[t];
-        }
-      } else {
-        entry.currentEditor = null;
-        for (int t = 0; t < valueCount; t++) {
-          deleteIfExists(entry.getCleanFile(t));
-          deleteIfExists(entry.getDirtyFile(t));
-        }
-        i.remove();
-      }
-    }
-  }
-
-  /**
-   * Creates a new journal that omits redundant information. This replaces the
-   * current journal if it exists.
-   */
-  private synchronized void rebuildJournal() throws IOException {
-    if (journalWriter != null) {
-      journalWriter.close();
-    }
-
-    Writer writer = new BufferedWriter(
-        new OutputStreamWriter(new FileOutputStream(journalFileTmp), Util.US_ASCII));
-    try {
-      writer.write(MAGIC);
-      writer.write("\n");
-      writer.write(VERSION_1);
-      writer.write("\n");
-      writer.write(Integer.toString(appVersion));
-      writer.write("\n");
-      writer.write(Integer.toString(valueCount));
-      writer.write("\n");
-      writer.write("\n");
-
-      for (Entry entry : lruEntries.values()) {
-        if (entry.currentEditor != null) {
-          writer.write(DIRTY + ' ' + entry.key + '\n');
-        } else {
-          writer.write(CLEAN + ' ' + entry.key + entry.getLengths() + '\n');
-        }
-      }
-    } finally {
-      writer.close();
-    }
-
-    if (journalFile.exists()) {
-      renameTo(journalFile, journalFileBackup, true);
-    }
-    renameTo(journalFileTmp, journalFile, false);
-    journalFileBackup.delete();
-
-    journalWriter = new BufferedWriter(
-        new OutputStreamWriter(new FileOutputStream(journalFile, true), Util.US_ASCII));
-  }
-
-  private static void deleteIfExists(File file) throws IOException {
-    if (file.exists() && !file.delete()) {
-      throw new IOException();
-    }
-  }
-
-  private static void renameTo(File from, File to, boolean deleteDestination) throws IOException {
-    if (deleteDestination) {
-      deleteIfExists(to);
-    }
-    if (!from.renameTo(to)) {
-      throw new IOException();
-    }
-  }
-
-  /**
-   * Returns a snapshot of the entry named {@code key}, or null if it doesn't
-   * exist is not currently readable. If a value is returned, it is moved to
-   * the head of the LRU queue.
-   */
-  public synchronized Snapshot get(String key) throws IOException {
-    checkNotClosed();
-    validateKey(key);
-    Entry entry = lruEntries.get(key);
-    if (entry == null) {
-      return null;
-    }
-
-    if (!entry.readable) {
-      return null;
-    }
-
-    // Open all streams eagerly to guarantee that we see a single published
-    // snapshot. If we opened streams lazily then the streams could come
-    // from different edits.
-    InputStream[] ins = new InputStream[valueCount];
-    try {
-      for (int i = 0; i < valueCount; i++) {
-        ins[i] = new FileInputStream(entry.getCleanFile(i));
-      }
-    } catch (FileNotFoundException e) {
-      // A file must have been deleted manually!
-      for (int i = 0; i < valueCount; i++) {
-        if (ins[i] != null) {
-          Util.closeQuietly(ins[i]);
-        } else {
-          break;
-        }
-      }
-      return null;
-    }
-
-    redundantOpCount++;
-    journalWriter.append(READ + ' ' + key + '\n');
-    if (journalRebuildRequired()) {
-      executorService.submit(cleanupCallable);
-    }
-
-    return new Snapshot(key, entry.sequenceNumber, ins, entry.lengths);
-  }
-
-  /**
-   * Returns an editor for the entry named {@code key}, or null if another
-   * edit is in progress.
-   */
-  public Editor edit(String key) throws IOException {
-    return edit(key, ANY_SEQUENCE_NUMBER);
-  }
-
-  private synchronized Editor edit(String key, long expectedSequenceNumber) throws IOException {
-    checkNotClosed();
-    validateKey(key);
-    Entry entry = lruEntries.get(key);
-    if (expectedSequenceNumber != ANY_SEQUENCE_NUMBER && (entry == null
-        || entry.sequenceNumber != expectedSequenceNumber)) {
-      return null; // Snapshot is stale.
-    }
-    if (entry == null) {
-      entry = new Entry(key);
-      lruEntries.put(key, entry);
-    } else if (entry.currentEditor != null) {
-      return null; // Another edit is in progress.
-    }
-
-    Editor editor = new Editor(entry);
-    entry.currentEditor = editor;
-
-    // Flush the journal before creating files to prevent file leaks.
-    journalWriter.write(DIRTY + ' ' + key + '\n');
-    journalWriter.flush();
-    return editor;
-  }
-
-  /** Returns the directory where this cache stores its data. */
-  public File getDirectory() {
-    return directory;
-  }
-
-  /**
-   * Returns the maximum number of bytes that this cache should use to store
-   * its data.
-   */
-  public long getMaxSize() {
-    return maxSize;
-  }
-
-  /**
-   * Changes the maximum number of bytes the cache can store and queues a job
-   * to trim the existing store, if necessary.
-   */
-  public synchronized void setMaxSize(long maxSize) {
-    this.maxSize = maxSize;
-    executorService.submit(cleanupCallable);
-  }
-
-  /**
-   * Returns the number of bytes currently being used to store the values in
-   * this cache. This may be greater than the max size if a background
-   * deletion is pending.
-   */
-  public synchronized long size() {
-    return size;
-  }
-
-  private synchronized void completeEdit(Editor editor, boolean success) throws IOException {
-    Entry entry = editor.entry;
-    if (entry.currentEditor != editor) {
-      throw new IllegalStateException();
-    }
-
-    // If this edit is creating the entry for the first time, every index must have a value.
-    if (success && !entry.readable) {
-      for (int i = 0; i < valueCount; i++) {
-        if (!editor.written[i]) {
-          editor.abort();
-          throw new IllegalStateException("Newly created entry didn't create value for index " + i);
-        }
-        if (!entry.getDirtyFile(i).exists()) {
-          editor.abort();
-          return;
-        }
-      }
-    }
-
-    for (int i = 0; i < valueCount; i++) {
-      File dirty = entry.getDirtyFile(i);
-      if (success) {
-        if (dirty.exists()) {
-          File clean = entry.getCleanFile(i);
-          dirty.renameTo(clean);
-          long oldLength = entry.lengths[i];
-          long newLength = clean.length();
-          entry.lengths[i] = newLength;
-          size = size - oldLength + newLength;
-        }
-      } else {
-        deleteIfExists(dirty);
-      }
-    }
-
-    redundantOpCount++;
-    entry.currentEditor = null;
-    if (entry.readable | success) {
-      entry.readable = true;
-      journalWriter.write(CLEAN + ' ' + entry.key + entry.getLengths() + '\n');
-      if (success) {
-        entry.sequenceNumber = nextSequenceNumber++;
-      }
-    } else {
-      lruEntries.remove(entry.key);
-      journalWriter.write(REMOVE + ' ' + entry.key + '\n');
-    }
-    journalWriter.flush();
-
-    if (size > maxSize || journalRebuildRequired()) {
-      executorService.submit(cleanupCallable);
-    }
-  }
-
-  /**
-   * We only rebuild the journal when it will halve the size of the journal
-   * and eliminate at least 2000 ops.
-   */
-  private boolean journalRebuildRequired() {
-    final int redundantOpCompactThreshold = 2000;
-    return redundantOpCount >= redundantOpCompactThreshold //
-        && redundantOpCount >= lruEntries.size();
-  }
-
-  /**
-   * Drops the entry for {@code key} if it exists and can be removed. Entries
-   * actively being edited cannot be removed.
-   *
-   * @return true if an entry was removed.
-   */
-  public synchronized boolean remove(String key) throws IOException {
-    checkNotClosed();
-    validateKey(key);
-    Entry entry = lruEntries.get(key);
-    if (entry == null || entry.currentEditor != null) {
-      return false;
-    }
-
-    for (int i = 0; i < valueCount; i++) {
-      File file = entry.getCleanFile(i);
-      if (!file.delete()) {
-        throw new IOException("failed to delete " + file);
-      }
-      size -= entry.lengths[i];
-      entry.lengths[i] = 0;
-    }
-
-    redundantOpCount++;
-    journalWriter.append(REMOVE + ' ' + key + '\n');
-    lruEntries.remove(key);
-
-    if (journalRebuildRequired()) {
-      executorService.submit(cleanupCallable);
-    }
-
-    return true;
-  }
-
-  /** Returns true if this cache has been closed. */
-  public boolean isClosed() {
-    return journalWriter == null;
-  }
-
-  private void checkNotClosed() {
-    if (journalWriter == null) {
-      throw new IllegalStateException("cache is closed");
-    }
-  }
-
-  /** Force buffered operations to the filesystem. */
-  public synchronized void flush() throws IOException {
-    checkNotClosed();
-    trimToSize();
-    journalWriter.flush();
-  }
-
-  /** Closes this cache. Stored values will remain on the filesystem. */
-  public synchronized void close() throws IOException {
-    if (journalWriter == null) {
-      return; // Already closed.
-    }
-    for (Entry entry : new ArrayList<Entry>(lruEntries.values())) {
-      if (entry.currentEditor != null) {
-        entry.currentEditor.abort();
-      }
-    }
-    trimToSize();
-    journalWriter.close();
-    journalWriter = null;
-  }
-
-  private void trimToSize() throws IOException {
-    while (size > maxSize) {
-      Map.Entry<String, Entry> toEvict = lruEntries.entrySet().iterator().next();
-      remove(toEvict.getKey());
-    }
-  }
-
-  /**
-   * Closes the cache and deletes all of its stored values. This will delete
-   * all files in the cache directory including files that weren't created by
-   * the cache.
-   */
-  public void delete() throws IOException {
-    close();
-    Util.deleteContents(directory);
-  }
-
-  private void validateKey(String key) {
-    Matcher matcher = LEGAL_KEY_PATTERN.matcher(key);
-    if (!matcher.matches()) {
-      throw new IllegalArgumentException("keys must match regex [a-z0-9_-]{1,64}: \"" + key + "\"");
-    }
-  }
-
-  private static String inputStreamToString(InputStream in) throws IOException {
-    return Util.readFully(new InputStreamReader(in, Util.UTF_8));
-  }
-
-  /** A snapshot of the values for an entry. */
-  public final class Snapshot implements Closeable {
-    private final String key;
-    private final long sequenceNumber;
-    private final InputStream[] ins;
-    private final long[] lengths;
-
-    private Snapshot(String key, long sequenceNumber, InputStream[] ins, long[] lengths) {
-      this.key = key;
-      this.sequenceNumber = sequenceNumber;
-      this.ins = ins;
-      this.lengths = lengths;
-    }
-
-    /**
-     * Returns an editor for this snapshot's entry, or null if either the
-     * entry has changed since this snapshot was created or if another edit
-     * is in progress.
-     */
-    public Editor edit() throws IOException {
-      return DiskLruCache.this.edit(key, sequenceNumber);
-    }
-
-    /** Returns the unbuffered stream with the value for {@code index}. */
-    public InputStream getInputStream(int index) {
-      return ins[index];
-    }
-
-    /** Returns the string value for {@code index}. */
-    public String getString(int index) throws IOException {
-      return inputStreamToString(getInputStream(index));
-    }
-
-    /** Returns the byte length of the value for {@code index}. */
-    public long getLength(int index) {
-      return lengths[index];
-    }
-
-    public void close() {
-      for (InputStream in : ins) {
-        Util.closeQuietly(in);
-      }
-    }
-  }
-
-  private static final OutputStream NULL_OUTPUT_STREAM = new OutputStream() {
-    @Override
-    public void write(int b) throws IOException {
-      // Eat all writes silently. Nom nom.
-    }
-  };
-
-  /** Edits the values for an entry. */
-  public final class Editor {
-    private final Entry entry;
-    private final boolean[] written;
-    private boolean hasErrors;
-    private boolean committed;
-
-    private Editor(Entry entry) {
-      this.entry = entry;
-      this.written = (entry.readable) ? null : new boolean[valueCount];
-    }
-
-    /**
-     * Returns an unbuffered input stream to read the last committed value,
-     * or null if no value has been committed.
-     */
-    public InputStream newInputStream(int index) throws IOException {
-      synchronized (DiskLruCache.this) {
-        if (entry.currentEditor != this) {
-          throw new IllegalStateException();
-        }
-        if (!entry.readable) {
-          return null;
-        }
-        try {
-          return new FileInputStream(entry.getCleanFile(index));
-        } catch (FileNotFoundException e) {
-          return null;
-        }
-      }
-    }
-
-    /**
-     * Returns the last committed value as a string, or null if no value
-     * has been committed.
-     */
-    public String getString(int index) throws IOException {
-      InputStream in = newInputStream(index);
-      return in != null ? inputStreamToString(in) : null;
-    }
-
-    /**
-     * Returns a new unbuffered output stream to write the value at
-     * {@code index}. If the underlying output stream encounters errors
-     * when writing to the filesystem, this edit will be aborted when
-     * {@link #commit} is called. The returned output stream does not throw
-     * IOExceptions.
-     */
-    public OutputStream newOutputStream(int index) throws IOException {
-      synchronized (DiskLruCache.this) {
-        if (entry.currentEditor != this) {
-          throw new IllegalStateException();
-        }
-        if (!entry.readable) {
-          written[index] = true;
-        }
-        File dirtyFile = entry.getDirtyFile(index);
-        FileOutputStream outputStream;
-        try {
-          outputStream = new FileOutputStream(dirtyFile);
-        } catch (FileNotFoundException e) {
-          // Attempt to recreate the cache directory.
-          directory.mkdirs();
-          try {
-            outputStream = new FileOutputStream(dirtyFile);
-          } catch (FileNotFoundException e2) {
-            // We are unable to recover. Silently eat the writes.
-            return NULL_OUTPUT_STREAM;
-          }
-        }
-        return new FaultHidingOutputStream(outputStream);
-      }
-    }
-
-    /** Sets the value at {@code index} to {@code value}. */
-    public void set(int index, String value) throws IOException {
-      Writer writer = null;
-      try {
-        writer = new OutputStreamWriter(newOutputStream(index), Util.UTF_8);
-        writer.write(value);
-      } finally {
-        Util.closeQuietly(writer);
-      }
-    }
-
-    /**
-     * Commits this edit so it is visible to readers.  This releases the
-     * edit lock so another edit may be started on the same key.
-     */
-    public void commit() throws IOException {
-      if (hasErrors) {
-        completeEdit(this, false);
-        remove(entry.key); // The previous entry is stale.
-      } else {
-        completeEdit(this, true);
-      }
-      committed = true;
-    }
-
-    /**
-     * Aborts this edit. This releases the edit lock so another edit may be
-     * started on the same key.
-     */
-    public void abort() throws IOException {
-      completeEdit(this, false);
-    }
-
-    public void abortUnlessCommitted() {
-      if (!committed) {
-        try {
-          abort();
-        } catch (IOException ignored) {
-        }
-      }
-    }
-
-    private class FaultHidingOutputStream extends FilterOutputStream {
-      private FaultHidingOutputStream(OutputStream out) {
-        super(out);
-      }
-
-      @Override public void write(int oneByte) {
-        try {
-          out.write(oneByte);
-        } catch (IOException e) {
-          hasErrors = true;
-        }
-      }
-
-      @Override public void write(byte[] buffer, int offset, int length) {
-        try {
-          out.write(buffer, offset, length);
-        } catch (IOException e) {
-          hasErrors = true;
-        }
-      }
-
-      @Override public void close() {
-        try {
-          out.close();
-        } catch (IOException e) {
-          hasErrors = true;
-        }
-      }
-
-      @Override public void flush() {
-        try {
-          out.flush();
-        } catch (IOException e) {
-          hasErrors = true;
-        }
-      }
-    }
-  }
-
-  private final class Entry {
-    private final String key;
-
-    /** Lengths of this entry's files. */
-    private final long[] lengths;
-
-    /** True if this entry has ever been published. */
-    private boolean readable;
-
-    /** The ongoing edit or null if this entry is not being edited. */
-    private Editor currentEditor;
-
-    /** The sequence number of the most recently committed edit to this entry. */
-    private long sequenceNumber;
-
-    private Entry(String key) {
-      this.key = key;
-      this.lengths = new long[valueCount];
-    }
-
-    public String getLengths() throws IOException {
-      StringBuilder result = new StringBuilder();
-      for (long size : lengths) {
-        result.append(' ').append(size);
-      }
-      return result.toString();
-    }
-
-    /** Set lengths using decimal numbers like "10123". */
-    private void setLengths(String[] strings) throws IOException {
-      if (strings.length != valueCount) {
-        throw invalidLengths(strings);
-      }
-
-      try {
-        for (int i = 0; i < strings.length; i++) {
-          lengths[i] = Long.parseLong(strings[i]);
-        }
-      } catch (NumberFormatException e) {
-        throw invalidLengths(strings);
-      }
-    }
-
-    private IOException invalidLengths(String[] strings) throws IOException {
-      throw new IOException("unexpected journal line: " + java.util.Arrays.toString(strings));
-    }
-
-    public File getCleanFile(int i) {
-      return new File(directory, key + "." + i);
-    }
-
-    public File getDirtyFile(int i) {
-      return new File(directory, key + "." + i + ".tmp");
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c6b171ba/framework/src/com/squareup/okhttp/internal/Dns.java
----------------------------------------------------------------------
diff --git a/framework/src/com/squareup/okhttp/internal/Dns.java b/framework/src/com/squareup/okhttp/internal/Dns.java
deleted file mode 100755
index 69b2d37..0000000
--- a/framework/src/com/squareup/okhttp/internal/Dns.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2012 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.internal;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * Domain name service. Prefer this over {@link InetAddress#getAllByName} to
- * make code more testable.
- */
-public interface Dns {
-  Dns DEFAULT = new Dns() {
-    @Override public InetAddress[] getAllByName(String host) throws UnknownHostException {
-      return InetAddress.getAllByName(host);
-    }
-  };
-
-  InetAddress[] getAllByName(String host) throws UnknownHostException;
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message