in baremaps-cli/src/main/java/org/apache/baremaps/cli/map/MBTiles.java [69:115]
public Integer call() throws Exception {
var objectMapper = objectMapper();
var configReader = new ConfigReader();
var caffeineSpec = CaffeineSpec.parse(cache);
var datasource = SqliteUtils.createDataSource(mbtilesPath);
var tileStoreSupplierType = new TypeLiteral<Supplier<TileStore>>() {};
var tileStore = new MBTilesStore(datasource);
var tileCache = new TileCache(tileStore, caffeineSpec);
var tileStoreSupplier = (Supplier<TileStore>) () -> tileCache;
var styleSupplierType = new TypeLiteral<Supplier<Style>>() {};
var style = objectMapper.readValue(configReader.read(stylePath), Style.class);
var styleSupplier = (Supplier<Style>) () -> style;
var tileJSONSupplierType = new TypeLiteral<Supplier<TileJSON>>() {};
var tileJSON = objectMapper.readValue(configReader.read(tileJSONPath), TileJSON.class);
var tileJSONSupplier = (Supplier<TileJSON>) () -> tileJSON;
// Configure the application
var application =
new ResourceConfig()
.register(CorsFilter.class)
.register(TileResource.class)
.register(StyleResource.class)
.register(TilesetResource.class)
.register(ClassPathResource.class)
.register(newContextResolver(objectMapper))
.register(new AbstractBinder() {
@Override
protected void configure() {
bind("assets").to(String.class).named("directory");
bind("server.html").to(String.class).named("index");
bind(tileStoreSupplier).to(tileStoreSupplierType);
bind(styleSupplier).to(styleSupplierType);
bind(tileJSONSupplier).to(tileJSONSupplierType);
}
});
var httpService = new HttpJerseyRouterBuilder().buildBlockingStreaming(application);
var serverContext = HttpServers.forPort(port).listenBlockingStreamingAndAwait(httpService);
logger.info("Listening on {}", serverContext.listenAddress());
serverContext.awaitShutdown();
return 0;
}