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