From 4c78f8652bb8cd5f3a401a257475e21865373c4f Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 3 Nov 2014 01:32:56 +0100 Subject: [PATCH] fix: UrlTileSource.Builder was hiding zoom values from TileSource.Builder - values set thorugh builder.minZoom()/maxZoom() were ignored should fix: #120 --- .../source/bitmap/BitmapTileSourceTest.java | 16 ++++++++++++++++ vtm/src/org/oscim/tiling/TileSource.java | 14 ++++++++++---- .../org/oscim/tiling/source/UrlTileSource.java | 17 +++++++++++++---- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/vtm-tests/test/org/oscim/tiling/source/bitmap/BitmapTileSourceTest.java b/vtm-tests/test/org/oscim/tiling/source/bitmap/BitmapTileSourceTest.java index 2eda03c2..5d15be66 100644 --- a/vtm-tests/test/org/oscim/tiling/source/bitmap/BitmapTileSourceTest.java +++ b/vtm-tests/test/org/oscim/tiling/source/bitmap/BitmapTileSourceTest.java @@ -5,6 +5,7 @@ import static org.fest.assertions.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; +import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.source.HttpEngine; import org.oscim.tiling.source.LwHttp; @@ -43,6 +44,21 @@ public class BitmapTileSourceTest { Mockito.verify(okHttp).close(); } + @Test + public void shouldUseBuilderConfig() { + BitmapTileSource ts = BitmapTileSource.builder() + .url("http://example.com") + .zoomMax(42) + .zoomMin(23) + .fadeSteps(new FadeStep[] { new FadeStep(0, 10, 0.5f, 1.0f) }) + .build(); + + assertThat(ts.getUrl().getHost()).isEqualTo("example.com"); + assertThat(ts.getZoomLevelMin()).isEqualTo(23); + assertThat(ts.getZoomLevelMax()).isEqualTo(42); + assertThat(ts.getFadeSteps()).isNotNull(); + } + /** * Test factory that allows the specific {@link HttpEngine} instance to be * set. diff --git a/vtm/src/org/oscim/tiling/TileSource.java b/vtm/src/org/oscim/tiling/TileSource.java index 40e627b5..5fd0ac90 100644 --- a/vtm/src/org/oscim/tiling/TileSource.java +++ b/vtm/src/org/oscim/tiling/TileSource.java @@ -23,16 +23,16 @@ import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; public abstract class TileSource { public abstract static class Builder> { - int minZoom, maxZoom; - FadeStep[] fadeSteps; + protected int zoomMin, zoomMax; + protected FadeStep[] fadeSteps; public T zoomMin(int zoom) { - minZoom = zoom; + zoomMin = zoom; return self(); } public T zoomMax(int zoom) { - maxZoom = zoom; + zoomMax = zoom; return self(); } @@ -60,6 +60,12 @@ public abstract class TileSource { mZoomMax = zoomMax; } + public TileSource(Builder builder) { + mZoomMin = builder.zoomMin; + mZoomMax = builder.zoomMax; + mFadeSteps = builder.fadeSteps; + } + public abstract ITileDataSource getDataSource(); public abstract OpenResult open(); diff --git a/vtm/src/org/oscim/tiling/source/UrlTileSource.java b/vtm/src/org/oscim/tiling/source/UrlTileSource.java index c34d2f82..ac1c0140 100644 --- a/vtm/src/org/oscim/tiling/source/UrlTileSource.java +++ b/vtm/src/org/oscim/tiling/source/UrlTileSource.java @@ -28,7 +28,6 @@ import org.oscim.tiling.source.LwHttp.LwHttpFactory; public abstract class UrlTileSource extends TileSource { public abstract static class Builder> extends TileSource.Builder { - protected int zoomMin, zoomMax; protected String tilePath; protected String url; private HttpEngine.Factory engineFactory; @@ -74,7 +73,9 @@ public abstract class UrlTileSource extends TileSource { } protected UrlTileSource(Builder builder) { - this(builder.url, builder.tilePath, builder.zoomMin, builder.zoomMax); + super(builder); + mUrl = makeUrl(builder.url); + mTilePath = builder.tilePath.split("\\{|\\}"); mHttpFactory = builder.engineFactory; } @@ -84,17 +85,25 @@ public abstract class UrlTileSource extends TileSource { protected UrlTileSource(String urlString, String tilePath, int zoomMin, int zoomMax) { super(zoomMin, zoomMax); + mUrl = makeUrl(urlString); + mTilePath = makeTilePath(tilePath); + } + + private String[] makeTilePath(String tilePath) { if (tilePath == null) throw new IllegalArgumentException("tilePath cannot be null."); + return tilePath.split("\\{|\\}"); + } + + private URL makeUrl(String urlString) { URL url = null; try { url = new URL(urlString); } catch (MalformedURLException e) { throw new IllegalArgumentException(e); } - mUrl = url; - mTilePath = tilePath.split("\\{|\\}"); + return url; } @Override