mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-21 05:14:37 +00:00
ebean-test: Modify postgis platform to support both net.postgis and og.postgis (#3449)
* ebean-test: Modify postgis platform to support both net.postgis and org.postgis Use Class.forName() to test existence of net.postgis.jdbc.DriverWrapperLW and if available use that driver rather than the older org.postgis.DriverWrapperLW one. Also support explicitly specifying the driver to use via test property - ebean.test.postgis.driver * Update test for net postgis to use a separate container * Remove NetPostgisSetup as PostgisSetup handles both cases now
This commit is contained in:
@@ -5,12 +5,12 @@ ebean:
|
||||
test:
|
||||
# useDocker: false
|
||||
# shutdown: stop # stop | remove
|
||||
platform: netpostgis
|
||||
platform: postgis
|
||||
ddlMode: dropCreate # none | dropCreate | create | migration | createOnly | migrationDropCreate
|
||||
dbName: mynetgisapp
|
||||
|
||||
netpostgis:
|
||||
containerName: ebeanbuild_postgisnet
|
||||
postgis:
|
||||
containerName: ebeanbuild_postgis2
|
||||
port: 9433
|
||||
image: ghcr.io/baosystems/postgis:15
|
||||
# extensions: postgis
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
package io.ebean.test.config.platform;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* A variation of Postgres that expected Postgis extension support.
|
||||
*
|
||||
* Uses postgis/postgis image by default.
|
||||
*/
|
||||
class NetPostgisSetup implements PlatformSetup {
|
||||
|
||||
@Override
|
||||
public Properties setup(Config config) {
|
||||
int defaultPort = config.isUseDocker() ? 7432 : 5432;
|
||||
config.setDockerPlatform("postgis");
|
||||
config.ddlMode("dropCreate");
|
||||
config.setDefaultPort(defaultPort);
|
||||
config.setUsernameDefault();
|
||||
config.setPasswordDefault();
|
||||
config.setDriver("net.postgis.jdbc.DriverWrapperLW");
|
||||
config.setUrl("jdbc:postgresql_lwgis://${host}:${port}/${databaseName}");
|
||||
|
||||
String schema = config.getSchema();
|
||||
if (schema != null && !schema.equals(config.getUsername())) {
|
||||
config.urlAppend("?currentSchema=" + schema);
|
||||
}
|
||||
config.datasourceDefaults();
|
||||
return dockerProperties(config);
|
||||
}
|
||||
|
||||
private Properties dockerProperties(Config config) {
|
||||
if (!config.isUseDocker()) {
|
||||
return new Properties();
|
||||
}
|
||||
config.setExtensions("hstore,pgcrypto,postgis");
|
||||
config.setDockerContainerName("ut_postgis");
|
||||
config.setDockerVersion("14-3.2");
|
||||
return config.getDockerProperties();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupExtraDbDataSource(Config config) {
|
||||
int defaultPort = config.isUseDocker() ? 7432 : 5432;
|
||||
config.setDefaultPort(defaultPort);
|
||||
config.setExtraUsernameDefault();
|
||||
config.setExtraDbPasswordDefault();
|
||||
config.setExtraUrl("jdbc:postgresql_lwgis://${host}:${port}/${databaseName}");
|
||||
config.extraDatasourceDefaults();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLocal() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,7 +26,6 @@ public class PlatformAutoConfig {
|
||||
KNOWN_PLATFORMS.put("sqlite", new SqliteSetup());
|
||||
KNOWN_PLATFORMS.put("postgres", new PostgresSetup());
|
||||
KNOWN_PLATFORMS.put("postgis", new PostgisSetup());
|
||||
KNOWN_PLATFORMS.put("netpostgis", new NetPostgisSetup());
|
||||
KNOWN_PLATFORMS.put("nuodb", new NuoDBSetup());
|
||||
KNOWN_PLATFORMS.put("mysql", new MySqlSetup());
|
||||
KNOWN_PLATFORMS.put("mariadb", new MariaDBSetup());
|
||||
|
||||
@@ -9,6 +9,9 @@ import java.util.Properties;
|
||||
*/
|
||||
class PostgisSetup implements PlatformSetup {
|
||||
|
||||
private static final String NET_POSTGIS_DRIVER = "net.postgis.jdbc.DriverWrapperLW";
|
||||
private static final String ORG_POSTGIS_DRIVER = "org.postgis.DriverWrapperLW";
|
||||
|
||||
@Override
|
||||
public Properties setup(Config config) {
|
||||
int defaultPort = config.isUseDocker() ? 7432 : 5432;
|
||||
@@ -17,9 +20,8 @@ class PostgisSetup implements PlatformSetup {
|
||||
config.setDefaultPort(defaultPort);
|
||||
config.setUsernameDefault();
|
||||
config.setPasswordDefault();
|
||||
config.setDriver("org.postgis.DriverWrapperLW");
|
||||
config.setDriver(driver(config));
|
||||
config.setUrl("jdbc:postgresql_lwgis://${host}:${port}/${databaseName}");
|
||||
|
||||
String schema = config.getSchema();
|
||||
if (schema != null && !schema.equals(config.getUsername())) {
|
||||
config.urlAppend("?currentSchema=" + schema);
|
||||
@@ -28,6 +30,19 @@ class PostgisSetup implements PlatformSetup {
|
||||
return dockerProperties(config);
|
||||
}
|
||||
|
||||
private String driver(Config config) {
|
||||
String driver = config.getPlatformKey("driver", "");
|
||||
if (!driver.isEmpty()) {
|
||||
return driver;
|
||||
}
|
||||
try {
|
||||
Class.forName(NET_POSTGIS_DRIVER);
|
||||
return NET_POSTGIS_DRIVER;
|
||||
} catch (ClassNotFoundException e){
|
||||
return ORG_POSTGIS_DRIVER;
|
||||
}
|
||||
}
|
||||
|
||||
private Properties dockerProperties(Config config) {
|
||||
if (!config.isUseDocker()) {
|
||||
return new Properties();
|
||||
|
||||
Reference in New Issue
Block a user