/**
* {@inheritDoc}
*/
@Override
public DatasetContext createReader() {
ReleasableContainer releasableContainer = new ReleasableContainer();
try {
DatasetContext reader;
reader = new DatasetStoreReader(
new NodeStorageContainer(
releasableContainer.add(nodeObjectStore.createReader()),
releasableContainer.add(nodeObjectOffsetIndexWriter.createReader()),
releasableContainer.add(nodeTileIndexWriter.createReader()),
releasableContainer.add(nodeWayIndexWriter.createReader()),
releasableContainer.add(nodeRelationIndexWriter.createReader())),
new WayStorageContainer(
releasableContainer.add(wayObjectStore.createReader()),
releasableContainer.add(wayObjectOffsetIndexWriter.createReader()),
releasableContainer.add(wayTileIndexWriter.createReader()),
releasableContainer.add(wayRelationIndexWriter.createReader())),
new RelationStorageContainer(
releasableContainer.add(relationObjectStore.createReader()),
releasableContainer.add(relationObjectOffsetIndexWriter.createReader()),
releasableContainer.add(relationRelationIndexWriter.createReader())),
enableWayTileIndex
);
// Stop the release of all created objects.
releasableContainer.clear();
return reader;
} finally {
releasableContainer.release();
}
}