public Integer call()

in baremaps-cli/src/main/java/org/apache/baremaps/cli/map/StyleCommand.java [64:105]


  public Integer call() throws Exception {
    var configReader = new ConfigReader();
    var objectMapper = objectMapper();

    var styleSupplierType = new TypeLiteral<Supplier<Style>>() {};
    var styleSupplier = (Supplier<Style>) () -> {
      try {
        var config = configReader.read(stylePath);
        var object = objectMapper.readValue(config, Style.class);
        var styleSource = new StyleSource("vector", tilesUrl.toString());
        object.setSources(Map.of("baremaps", styleSource));
        return object;
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
    };

    var application = new ResourceConfig()
        .register(CorsFilter.class)
        .register(ChangeResource.class)
        .register(StyleResource.class)
        .register(ChangeResource.class)
        .register(ClassPathResource.class)
        .register(newContextResolver(objectMapper))
        .register(new AbstractBinder() {
          @Override
          protected void configure() {
            bind("assets").to(String.class).named("directory");
            bind("viewer.html").to(String.class).named("index");
            bind(stylePath).to(Path.class).named("style");
            bind(styleSupplier).to(styleSupplierType);
          }
        });

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

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

    return 0;
  }