public Integer call()

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;
  }