public Integer call()

in baremaps-cli/src/main/java/org/apache/baremaps/cli/ogcapi/OgcApi.java [75:119]


  public Integer call() throws Exception {
    // Configure serialization
    var objectMapper = objectMapper();
    var configReader = new ConfigReader();
    var config = objectMapper.readValue(configReader.read(this.tileset), Tileset.class);
    var caffeineSpec = CaffeineSpec.parse(cache);
    var dataSource = PostgresUtils.createDataSource(database);

    var tileStore = new PostgresTileStore(dataSource, config);
    var tileCache = new TileCache(tileStore, caffeineSpec);

    // Initialize the application
    var application = new ResourceConfig()
        .registerClasses(
            CorsFilter.class,
            MultiPartFeature.class,
            DefaultResource.class,
            ApiResource.class,
            ConformanceResource.class,
            CollectionsResource.class,
            StylesResource.class,
            TilesResource.class)
        .register(newContextResolver(objectMapper))
        .register(new AbstractBinder() {
          @Override
          protected void configure() {
            bind(tileset).to(Path.class).named("tileset");
            bind(style).to(Path.class).named("style");
            bind(dataSource).to(DataSource.class);
            bind(tileCache).to(TileStore.class);
            bind(objectMapper).to(ObjectMapper.class);
          }
        });

    BlockingStreamingHttpService httpService =
        new HttpJerseyRouterBuilder().buildBlockingStreaming(application);
    ServerContext serverContext =
        HttpServers.forPort(port).listenBlockingStreamingAndAwait(httpService);

    logger.info("Listening on {}", serverContext.listenAddress());

    serverContext.awaitShutdown();

    return 0;
  }