kopia lustrzana https://github.com/onthegomap/planetiler
properly close the getAllTiles iterator
rodzic
264b3515c4
commit
19c834fb5d
|
@ -26,7 +26,9 @@ abstract class ReadableStreamArchive<E> implements ReadableTileArchive {
|
|||
|
||||
@Override
|
||||
public final byte[] getTile(TileCoord coord) {
|
||||
return getAllTiles().stream().filter(c -> c.coord().equals(coord)).map(Tile::bytes).findFirst().orElse(null);
|
||||
try (var tiles = getAllTiles(); var s = tiles.stream()) {
|
||||
return s.filter(c -> c.coord().equals(coord)).map(Tile::bytes).findFirst().orElse(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,11 +36,17 @@ abstract class ReadableStreamArchive<E> implements ReadableTileArchive {
|
|||
return getTile(TileCoord.ofXYZ(x, y, z));
|
||||
}
|
||||
|
||||
/**
|
||||
* Callers MUST make sure to close the iterator/derived stream!
|
||||
*/
|
||||
@Override
|
||||
public final CloseableIterator<TileCoord> getAllTileCoords() {
|
||||
return getAllTiles().map(Tile::coord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callers MUST make sure to close the iterator/derived stream!
|
||||
*/
|
||||
@Override
|
||||
public final CloseableIterator<Tile> getAllTiles() {
|
||||
return createIterator()
|
||||
|
@ -53,8 +61,8 @@ abstract class ReadableStreamArchive<E> implements ReadableTileArchive {
|
|||
}
|
||||
|
||||
private TileArchiveMetadata loadMetadata() {
|
||||
try (var it = createIterator()) {
|
||||
return it.stream().map(this::mapEntryToMetadata).flatMap(Optional::stream).findFirst().orElse(null);
|
||||
try (var i = createIterator(); var s = i.stream()) {
|
||||
return s.map(this::mapEntryToMetadata).flatMap(Optional::stream).findFirst().orElse(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -294,7 +294,9 @@ public class TestUtils {
|
|||
}
|
||||
|
||||
public static Set<Tile> getTiles(ReadableTileArchive db) {
|
||||
return db.getAllTiles().stream().collect(Collectors.toSet());
|
||||
try (var t = db.getAllTiles(); var s = t.stream()) {
|
||||
return s.collect(Collectors.toUnmodifiableSet());
|
||||
}
|
||||
}
|
||||
|
||||
public static int getTilesDataCount(Mbtiles db) throws SQLException {
|
||||
|
|
|
@ -49,8 +49,12 @@ class ReadableFilesArchiveTest {
|
|||
Files.write(files.get(i), new byte[]{(byte) i});
|
||||
}
|
||||
|
||||
try (var reader = ReadableFilesArchive.newReader(tilesDir, Arguments.of())) {
|
||||
final List<Tile> tiles = reader.getAllTiles().stream().sorted().toList();
|
||||
try (
|
||||
var reader = ReadableFilesArchive.newReader(tilesDir, Arguments.of());
|
||||
var t = reader.getAllTiles();
|
||||
var s = t.stream()
|
||||
) {
|
||||
final List<Tile> tiles = s.sorted().toList();
|
||||
assertEquals(
|
||||
List.of(
|
||||
new Tile(TileCoord.ofXYZ(0, 0, 0), new byte[]{0}),
|
||||
|
|
|
@ -63,8 +63,12 @@ class ReadableCsvStreamArchiveTest {
|
|||
);
|
||||
|
||||
try (var reader = ReadableCsvArchive.newReader(TileArchiveConfig.Format.CSV, csvFile, config)) {
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
assertNull(reader.metadata());
|
||||
assertNull(reader.metadata());
|
||||
assertArrayEquals(expectedTiles.get(1).bytes(), reader.getTile(TileCoord.ofXYZ(1, 2, 3)));
|
||||
|
|
|
@ -36,8 +36,12 @@ class ReadableJsonStreamArchiveTest {
|
|||
new Tile(TileCoord.ofXYZ(1, 2, 3), new byte[]{1})
|
||||
);
|
||||
try (var reader = ReadableJsonStreamArchive.newReader(jsonFile, config)) {
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
assertEquals(TestUtils.MAX_METADATA_DESERIALIZED, reader.metadata());
|
||||
assertEquals(TestUtils.MAX_METADATA_DESERIALIZED, reader.metadata());
|
||||
assertArrayEquals(expectedTiles.get(1).bytes(), reader.getTile(TileCoord.ofXYZ(1, 2, 3)));
|
||||
|
|
|
@ -52,8 +52,13 @@ class ReadableProtoStreamArchiveTest {
|
|||
new Tile(TileCoord.ofXYZ(1, 2, 3), new byte[]{1})
|
||||
);
|
||||
try (var reader = ReadableProtoStreamArchive.newReader(p, new StreamArchiveConfig(false, Arguments.of()))) {
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
assertEquals(expectedTiles, reader.getAllTiles().stream().toList());
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
try (var s = reader.getAllTiles().stream()) {
|
||||
assertEquals(expectedTiles, s.toList());
|
||||
}
|
||||
assertEquals(metadataDeserialized, reader.metadata());
|
||||
assertEquals(metadataDeserialized, reader.metadata());
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue