From 3f959a3b46a46393bdb1173afcfaa05d16658532 Mon Sep 17 00:00:00 2001 From: Emux Date: Wed, 7 Jun 2017 21:24:18 +0300 Subject: [PATCH] OkHttpEngine: improve cache API, add example #138 --- .../org/oscim/tiling/source/OkHttpEngine.java | 8 ++++---- .../src/org/oscim/test/MapboxTest.java | 18 +++++++++++++++++- .../oscim/tiling/source/OkHttpEngineTest.java | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java b/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java index 0933af6c..e19f0f95 100644 --- a/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java +++ b/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java @@ -55,11 +55,11 @@ public class OkHttpEngine implements HttpEngine { } /** - * OkHttp cache implemented through {@link OkHttpClient.Builder#cache(Cache)}. + * Sets the response cache to be used to read and write cached responses. */ - public OkHttpFactory(Cache cache) { - mClientBuilder = new OkHttpClient.Builder() - .cache(cache); + public OkHttpFactory cache(Cache cache) { + mClientBuilder.cache(cache); + return this; } /** diff --git a/vtm-playground/src/org/oscim/test/MapboxTest.java b/vtm-playground/src/org/oscim/test/MapboxTest.java index a3e60eab..6773b5d9 100644 --- a/vtm-playground/src/org/oscim/test/MapboxTest.java +++ b/vtm-playground/src/org/oscim/test/MapboxTest.java @@ -23,13 +23,29 @@ import org.oscim.tiling.source.OkHttpEngine; import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.mvt.MapboxTileSource; +import java.io.File; +import java.util.UUID; + +import okhttp3.Cache; + public class MapboxTest extends GdxMapApp { + private static final boolean USE_CACHE = false; + @Override public void createLayers() { + // Cache the tiles into file system + File cacheDirectory = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString()); + int cacheSize = 10 * 1024 * 1024; // 10 MB + Cache cache = new Cache(cacheDirectory, cacheSize); + + OkHttpEngine.OkHttpFactory factory = new OkHttpEngine.OkHttpFactory(); + if (USE_CACHE) + factory.cache(cache); + UrlTileSource tileSource = MapboxTileSource.builder() .apiKey("mapzen-xxxxxxx") // Put a proper API key - .httpFactory(new OkHttpEngine.OkHttpFactory()) + .httpFactory(factory) //.locale("en") .build(); diff --git a/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java b/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java index bfaef18e..d94ddd73 100644 --- a/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java +++ b/vtm-tests/test/org/oscim/tiling/source/OkHttpEngineTest.java @@ -94,7 +94,7 @@ public class OkHttpEngineTest { Cache cache = new Cache(new File("tmp"), 1024); OSciMap4TileSource tileSource = new OSciMap4TileSource(server.url("/tiles/vtm").toString()); - engine = (OkHttpEngine) new OkHttpEngine.OkHttpFactory(cache).create(tileSource); + engine = (OkHttpEngine) new OkHttpEngine.OkHttpFactory().cache(cache).create(tileSource); engine.sendRequest(new Tile(1, 2, (byte) 3)); engine.requestCompleted(true); assertThat(cache.requestCount()).isEqualTo(1);