Skip to content

Commit 22ff25e

Browse files
committed
Add TileLayer.withTilelayer static method to make sure the TileLayer gets closed.
1 parent a6e1927 commit 22ff25e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/main/groovy/geoscript/layer/TileLayer.groovy

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,5 +184,18 @@ abstract class TileLayer<T extends Tile> implements Closeable {
184184
String toString() {
185185
this.name
186186
}
187+
188+
/**
189+
* Use a TileLayer within a Closure and make sure it gets closed.
190+
* @param tileLayer The TileLayer
191+
* @param closure A Closure that takes the TileLayer
192+
*/
193+
static void withTileLayer(TileLayer tileLayer, Closure closure) {
194+
try {
195+
closure.call(tileLayer)
196+
} finally {
197+
tileLayer.close()
198+
}
199+
}
187200

188201
}

src/test/groovy/geoscript/layer/TileLayerTestCase.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,16 @@ class TileLayerTestCase {
277277
}
278278
}
279279

280+
@Test
281+
void withTileLayer() {
282+
File file = new File(getClass().getClassLoader().getResource("states.mbtiles").toURI())
283+
TileLayer.withTileLayer(new MBTiles(file)) { TileLayer layer ->
284+
Tile tile = layer.get(4, 2, 3)
285+
assertNotNull tile
286+
assertEquals 4, tile.z
287+
assertEquals 2, tile.x
288+
assertEquals 3, tile.y
289+
assertNotNull tile.data
290+
}
291+
}
280292
}

0 commit comments

Comments
 (0)