From 67336e0c939f49ad79e8d51f13862b83003ace42 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Thu, 11 Sep 2014 20:02:07 +0200 Subject: [PATCH] implement okhttp response caching based on patch from: Baldur Gudbjornsson --- .../org/oscim/tiling/source/OkHttpEngineTest.java | 14 ++++++++++++++ vtm/src/org/oscim/tiling/source/OkHttpEngine.java | 12 +++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java b/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java index 6ba3f3b2..0581d8f4 100644 --- a/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java +++ b/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java @@ -3,6 +3,7 @@ package org.oscim.tiling.source; import static org.fest.assertions.api.Assertions.assertThat; import java.io.BufferedReader; +import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; @@ -12,6 +13,7 @@ import org.junit.Test; import org.oscim.core.Tile; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; +import com.squareup.okhttp.HttpResponseCache; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; import com.squareup.okhttp.mockwebserver.RecordedRequest; @@ -20,6 +22,7 @@ public class OkHttpEngineTest { private OkHttpEngine engine; private MockWebServer server; private MockResponse mockResponse; + private HttpResponseCache cache; @Before public void setUp() throws Exception { @@ -87,4 +90,15 @@ public class OkHttpEngineTest { assertThat(engine.requestCompleted(true)).isTrue(); assertThat(engine.requestCompleted(false)).isFalse(); } + + @Test + public void create_shouldUseTileSourceCache() throws Exception { + cache = new HttpResponseCache(new File("tmp"), 1024); + OSciMap4TileSource tileSource = + new OSciMap4TileSource(server.getUrl("/tiles/vtm").toString()); + engine = (OkHttpEngine) new OkHttpEngine.OkHttpFactory(cache).create(tileSource); + engine.sendRequest(new Tile(1, 2, new Integer(3).byteValue())); + engine.requestCompleted(true); + assertThat(cache.getRequestCount()).isEqualTo(1); + } } diff --git a/vtm/src/org/oscim/tiling/source/OkHttpEngine.java b/vtm/src/org/oscim/tiling/source/OkHttpEngine.java index bdde7398..a2783dbe 100644 --- a/vtm/src/org/oscim/tiling/source/OkHttpEngine.java +++ b/vtm/src/org/oscim/tiling/source/OkHttpEngine.java @@ -27,10 +27,15 @@ import java.util.Map.Entry; import org.oscim.core.Tile; import org.oscim.utils.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.squareup.okhttp.HttpResponseCache; import com.squareup.okhttp.OkHttpClient; public class OkHttpEngine implements HttpEngine { + static final Logger log = LoggerFactory.getLogger(OkHttpEngine.class); + private final OkHttpClient mClient; private final UrlTileSource mTileSource; @@ -41,6 +46,11 @@ public class OkHttpEngine implements HttpEngine { mClient = new OkHttpClient(); } + public OkHttpFactory(HttpResponseCache responseCache) { + mClient = new OkHttpClient(); + mClient.setResponseCache(responseCache); + } + @Override public HttpEngine create(UrlTileSource tileSource) { return new OkHttpEngine(mClient, tileSource); @@ -95,7 +105,7 @@ public class OkHttpEngine implements HttpEngine { @Override public void setCache(OutputStream os) { - // TODO: Evaluate OkHttp response cache and determine if additional caching is required. + // OkHttp cache implented through tileSource setResponseCache } @Override