in baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Dev.java [85:154]
public Integer call() throws Exception {
var configReader = new ConfigReader();
var objectMapper = objectMapper();
var tileset = objectMapper.readValue(configReader.read(this.tilesetPath), Tileset.class);
var datasource = PostgresUtils.createDataSourceFromObject(tileset.getDatabase());
var postgresVersion = PostgresUtils.getPostgresVersion(datasource);
var tilesetSupplier = (Supplier<Tileset>) () -> {
try {
var config = configReader.read(tilesetPath);
return objectMapper.readValue(config, Tileset.class);
} catch (IOException e) {
throw new BaremapsException(e);
}
};
var tileStoreSupplier = (Supplier<TileStore<ByteBuffer>>) () -> {
var tileJSON = tilesetSupplier.get();
return new PostgresTileStore(datasource, tileJSON, postgresVersion);
};
var styleSupplier = (Supplier<Style>) () -> {
try {
var config = configReader.read(stylePath);
return objectMapper.readValue(config, Style.class);
} catch (IOException e) {
throw new BaremapsException(e);
}
};
var serverBuilder = Server.builder();
serverBuilder.http(port);
var jsonResponseConverter = new JacksonResponseConverterFunction(objectMapper);
serverBuilder.annotatedService(new ChangeResource(tilesetPath, stylePath),
jsonResponseConverter);
serverBuilder.annotatedService("/tiles", new VectorTileResource(tileStoreSupplier),
jsonResponseConverter);
serverBuilder.annotatedService(new StyleResource(styleSupplier), jsonResponseConverter);
serverBuilder.annotatedService(new TilesetResource(tilesetSupplier), jsonResponseConverter);
var index = HttpFile.of(ClassLoader.getSystemClassLoader(), "/static/viewer.html");
serverBuilder.service("/", index.asService());
serverBuilder.serviceUnder("/", FileService.of(ClassLoader.getSystemClassLoader(), "/static"));
if (assetsPath != null) {
serverBuilder.serviceUnder("/assets", FileService.of(assetsPath));
}
serverBuilder.decorator(CorsService.builderForAnyOrigin()
.allowRequestMethods(HttpMethod.POST, HttpMethod.GET, HttpMethod.PUT)
.allowRequestHeaders("Origin", "Content-Type", "Accept")
.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;
}