in baremaps-cli/src/main/java/org/apache/baremaps/cli/dem/Serve.java [55:122]
public Integer call() throws Exception {
// Initialize the tile stores
var geoTiffReader = new GeoTiffReader(path);
var rasterElevationTileStore = new TerrariumTileStore(geoTiffReader);
var rasterHillshadeTileStore =
new RasterHillshadeTileStore(
geoTiffReader,
ElevationUtils::terrariumToElevation);
var vectorHillshadeTileStore =
new VectorHillshadeTileStore(
geoTiffReader);
var vectorContourTileStore =
new VectorContourTileStore(geoTiffReader);
// Initialize the server
var objectMapper = objectMapper();
var jsonResponseConverter = new JacksonResponseConverterFunction(objectMapper);
var serverBuilder = Server.builder();
serverBuilder.http(port);
// Register the services
serverBuilder.annotatedService(
"/raster/elevation",
new BufferedImageResource(() -> rasterElevationTileStore),
jsonResponseConverter);
serverBuilder.annotatedService(
"/raster/hillshade",
new BufferedImageResource(() -> rasterHillshadeTileStore),
jsonResponseConverter);
serverBuilder.annotatedService(
"/vector/contour",
new VectorTileResource(() -> vectorContourTileStore),
jsonResponseConverter);
serverBuilder.annotatedService(
"/vector/hillshade",
new VectorTileResource(() -> vectorHillshadeTileStore),
jsonResponseConverter);
var index = HttpFile.of(ClassLoader.getSystemClassLoader(), "/dem/index.html");
serverBuilder.service("/", index.asService());
serverBuilder.decorator(CorsService.builderForAnyOrigin()
.allowAllRequestHeaders(true)
.allowRequestMethods(
HttpMethod.GET,
HttpMethod.POST,
HttpMethod.PUT,
HttpMethod.DELETE,
HttpMethod.OPTIONS,
HttpMethod.HEAD)
.allowCredentials()
.exposeHeaders(HttpHeaderNames.LOCATION)
.newDecorator());
serverBuilder.serviceUnder("/docs", new DocService());
serverBuilder.disableServerHeader();
serverBuilder.disableDateHeader();
var server = serverBuilder.build();
var startFuture = server.start();
startFuture.join();
var shutdownFuture = server.closeOnJvmShutdown();
shutdownFuture.join();
return 0;
}