This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch 755-pool-size
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git


The following commit(s) were added to refs/heads/755-pool-size by this push:
     new 0d097f74 Allow the database to be either a jdbc url or an object 
describing a datasource
0d097f74 is described below

commit 0d097f746762a84e7856b5da68c2bcf399442df2
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Sep 9 23:31:16 2023 +0200

    Allow the database to be either a jdbc url or an object describing a 
datasource
---
 .../main/java/org/apache/baremaps/cli/map/Dev.java |  9 +-------
 .../java/org/apache/baremaps/cli/map/Serve.java    | 10 +--------
 .../org/apache/baremaps/utils/PostgresUtils.java   | 24 ++++++++++++++++------
 .../tileset/{DataSource.java => Database.java}     |  5 ++---
 .../baremaps/vectortile/tileset/Tileset.java       | 16 ++-------------
 .../apache/baremaps/workflow/WorkflowContext.java  |  4 ++--
 .../apache/baremaps/workflow/tasks/ExecuteSql.java |  2 +-
 .../baremaps/workflow/tasks/ExecuteSqlScript.java  |  2 +-
 .../baremaps/workflow/tasks/ExportVectorTiles.java |  1 +
 .../baremaps/workflow/tasks/ImportGeoPackage.java  |  2 +-
 .../workflow/tasks/ImportOpenStreetMap.java        |  2 +-
 .../baremaps/workflow/tasks/ImportShapefile.java   |  2 +-
 .../workflow/tasks/UpdateOpenStreetMap.java        |  2 +-
 13 files changed, 33 insertions(+), 48 deletions(-)

diff --git a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Dev.java 
b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Dev.java
index f7e24f8d..1813823b 100644
--- a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Dev.java
+++ b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Dev.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
 import java.util.function.Supplier;
-import javax.sql.DataSource;
 import org.apache.baremaps.cli.Options;
 import org.apache.baremaps.config.ConfigReader;
 import org.apache.baremaps.server.*;
@@ -70,13 +69,7 @@ public class Dev implements Callable<Integer> {
     var configReader = new ConfigReader();
     var objectMapper = objectMapper();
     var tileset = objectMapper.readValue(configReader.read(this.tilesetPath), 
Tileset.class);
-
-    DataSource datasource;
-    if (tileset.getDataSource() != null) {
-      datasource = PostgresUtils.createDataSource(tileset.getDataSource());
-    } else {
-      datasource = PostgresUtils.createDataSource(tileset.getDatabase());
-    }
+    var datasource = PostgresUtils.createDataSource(tileset.getDatabase());
 
     var tileStoreType = new TypeLiteral<Supplier<TileStore>>() {};
     var tileStoreSupplier = (Supplier<TileStore>) () -> {
diff --git a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java 
b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
index 3ad0a469..5b827947 100644
--- a/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
+++ b/baremaps-cli/src/main/java/org/apache/baremaps/cli/map/Serve.java
@@ -21,7 +21,6 @@ import 
io.servicetalk.http.router.jersey.HttpJerseyRouterBuilder;
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
 import java.util.function.Supplier;
-import javax.sql.DataSource;
 import org.apache.baremaps.cli.Options;
 import org.apache.baremaps.config.ConfigReader;
 import org.apache.baremaps.server.*;
@@ -72,15 +71,8 @@ public class Serve implements Callable<Integer> {
     var objectMapper = objectMapper();
     var configReader = new ConfigReader();
     var caffeineSpec = CaffeineSpec.parse(cache);
-
     var tileset = objectMapper.readValue(configReader.read(tilesetPath), 
Tileset.class);
-
-    DataSource datasource;
-    if (tileset.getDataSource() != null) {
-      datasource = PostgresUtils.createDataSource(tileset.getDataSource());
-    } else {
-      datasource = PostgresUtils.createDataSource(tileset.getDatabase());
-    }
+    var datasource = PostgresUtils.createDataSource(tileset.getDatabase());
 
     var tileStoreSupplierType = new TypeLiteral<Supplier<TileStore>>() {};
     var tileStore = new PostgresTileStore(datasource, tileset);
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/utils/PostgresUtils.java 
b/baremaps-core/src/main/java/org/apache/baremaps/utils/PostgresUtils.java
index be377fd3..fbe4c667 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/utils/PostgresUtils.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/utils/PostgresUtils.java
@@ -13,7 +13,7 @@
 package org.apache.baremaps.utils;
 
 
-
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.io.Resources;
 import com.zaxxer.hikari.HikariConfig;
 import com.zaxxer.hikari.HikariDataSource;
@@ -24,10 +24,13 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
 import javax.sql.DataSource;
+import org.apache.baremaps.vectortile.tileset.Database;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/** A helper class for creating data sources and executing queries. */
+/**
+ * A helper class for creating data sources and executing queries.
+ */
 public final class PostgresUtils {
 
   private static final Logger logger = 
LoggerFactory.getLogger(PostgresUtils.class);
@@ -45,11 +48,20 @@ public final class PostgresUtils {
    * Creates a data source from a JDBC url with a pool size corresponding to 
the number of available
    * processors.
    *
-   * @param url the JDBC url
+   * @param database the database object, either a JDBC url or a {@code 
DataSource}
    * @return the data source
    */
-  public static DataSource createDataSource(String url) {
-    return createDataSource(url, Runtime.getRuntime().availableProcessors() * 
2);
+  public static DataSource createDataSource(Object database) {
+    if (database instanceof String url) {
+      return createDataSource(url);
+    } else {
+      var json = new ObjectMapper().convertValue(database, Database.class);
+      return createDataSource(json);
+    }
+  }
+
+  public static DataSource createDataSource(String database) {
+    return createDataSource(database, 
Runtime.getRuntime().availableProcessors() * 2);
   }
 
   /**
@@ -77,7 +89,7 @@ public final class PostgresUtils {
    * @return the data source
    */
   public static DataSource createDataSource(
-      org.apache.baremaps.vectortile.tileset.DataSource datasource) {
+      Database datasource) {
     var config = new HikariConfig();
     if (datasource.getDataSourceClassName() != null) {
       config.setDataSourceClassName(datasource.getDataSourceClassName());
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/DataSource.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Database.java
similarity index 98%
rename from 
baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/DataSource.java
rename to 
baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Database.java
index ec8e2ba7..58d4e921 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/DataSource.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Database.java
@@ -14,7 +14,7 @@ package org.apache.baremaps.vectortile.tileset;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-public class DataSource {
+public class Database {
 
   @JsonProperty("dataSourceClassName")
   private String dataSourceClassName;
@@ -55,8 +55,7 @@ public class DataSource {
   @JsonProperty("readOnly")
   private Boolean readOnly;
 
-  public DataSource() {}
-
+  public Database() {}
 
   public String getDataSourceClassName() {
     return dataSourceClassName;
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Tileset.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Tileset.java
index 1b0d47ec..14822c7d 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Tileset.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/vectortile/tileset/Tileset.java
@@ -13,7 +13,6 @@
 package org.apache.baremaps.vectortile.tileset;
 
 
-
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.util.ArrayList;
 import java.util.List;
@@ -74,10 +73,7 @@ public class Tileset {
 
   @Deprecated
   @JsonProperty("database")
-  private String database;
-
-  @JsonProperty("datasource")
-  private String dataSource;
+  private Object database;
 
   @JsonProperty("vector_layers")
   private List<TilesetLayer> vectorLayers = new ArrayList<>();
@@ -127,14 +123,6 @@ public class Tileset {
     return this;
   }
 
-  public String getDataSource() {
-    return dataSource;
-  }
-
-  public void setDataSource(String dataSource) {
-    this.dataSource = dataSource;
-  }
-
   public String getDescription() {
     return description;
   }
@@ -252,7 +240,7 @@ public class Tileset {
     return this;
   }
 
-  public String getDatabase() {
+  public Object getDatabase() {
     return database;
   }
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
index b03060ca..dc22c8fa 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
@@ -24,7 +24,7 @@ import org.apache.baremaps.utils.PostgresUtils;
  */
 public class WorkflowContext {
 
-  private Map<String, DataSource> dataSources = new ConcurrentHashMap<>() {};
+  private Map<Object, DataSource> dataSources = new ConcurrentHashMap<>() {};
 
   /**
    * Returns the data source associated with the specified database.
@@ -32,7 +32,7 @@ public class WorkflowContext {
    * @param database the JDBC connection string to the database
    * @return the data source
    */
-  public DataSource getDataSource(String database) {
+  public DataSource getDataSource(Object database) {
     return dataSources.computeIfAbsent(database, 
PostgresUtils::createDataSource);
   }
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
index 95af43e4..f40842bb 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSql.java
@@ -22,7 +22,7 @@ import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.apache.baremaps.workflow.WorkflowException;
 
-public record ExecuteSql(String database, Path file, boolean parallel) 
implements Task {
+public record ExecuteSql(Object database, Path file, boolean parallel) 
implements Task {
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
index 9e641590..8855bf99 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExecuteSqlScript.java
@@ -19,7 +19,7 @@ import org.apache.baremaps.workflow.Task;
 import org.apache.baremaps.workflow.WorkflowContext;
 import org.apache.baremaps.workflow.WorkflowException;
 
-public record ExecuteSqlScript(String database, Path file) implements Task {
+public record ExecuteSqlScript(Object database, Path file) implements Task {
 
   @Override
   public void execute(WorkflowContext context) throws Exception {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
index 5bced5a8..5b9f672e 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ExportVectorTiles.java
@@ -59,6 +59,7 @@ public record ExportVectorTiles(
     var objectMapper = objectMapper();
     var tileset = objectMapper.readValue(configReader.read(this.tileset), 
Tileset.class);
     var datasource = context.getDataSource(tileset.getDatabase());
+
     var sourceTileStore = sourceTileStore(tileset, datasource);
     var targetTileStore = targetTileStore(tileset);
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
index 1592619d..5490c7de 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportGeoPackage.java
@@ -24,7 +24,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportGeoPackage(Path file, String database, Integer sourceSRID, 
Integer targetSRID)
+public record ImportGeoPackage(Path file, Object database, Integer sourceSRID, 
Integer targetSRID)
     implements
       Task {
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOpenStreetMap.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOpenStreetMap.java
index b6486b9c..c387fe0c 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOpenStreetMap.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportOpenStreetMap.java
@@ -41,7 +41,7 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportOpenStreetMap(Path file, String database, Integer 
databaseSrid)
+public record ImportOpenStreetMap(Path file, Object database, Integer 
databaseSrid)
     implements
       Task {
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
index a32fab78..70597fe6 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/ImportShapefile.java
@@ -24,7 +24,7 @@ import org.apache.baremaps.workflow.WorkflowException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record ImportShapefile(Path file, String database, Integer sourceSRID, 
Integer targetSRID)
+public record ImportShapefile(Path file, Object database, Integer sourceSRID, 
Integer targetSRID)
     implements
       Task {
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOpenStreetMap.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOpenStreetMap.java
index 6b7babb5..4d0a7092 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOpenStreetMap.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/tasks/UpdateOpenStreetMap.java
@@ -44,7 +44,7 @@ import org.locationtech.jts.geom.Coordinate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public record UpdateOpenStreetMap(String database, Integer databaseSrid) 
implements Task {
+public record UpdateOpenStreetMap(Object database, Integer databaseSrid) 
implements Task {
 
   private static final Logger logger = 
LoggerFactory.getLogger(UpdateOpenStreetMap.class);
 

Reply via email to