Skip to content
This repository was archived by the owner on Oct 13, 2020. It is now read-only.

Commit 745c1c3

Browse files
committed
#31 - Add support for NuoDB
1 parent e8443aa commit 745c1c3

4 files changed

Lines changed: 70 additions & 9 deletions

File tree

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>io.ebean</groupId>
66
<artifactId>ebean-test</artifactId>
7-
<version>11.42.2-SNAPSHOT</version>
7+
<version>11.42.3-SNAPSHOT</version>
88

99
<parent>
1010
<groupId>org.avaje</groupId>
@@ -29,14 +29,14 @@
2929
<dependency>
3030
<groupId>io.ebean</groupId>
3131
<artifactId>ebean</artifactId>
32-
<version>11.42.1</version>
32+
<version>11.42.3</version>
3333
<scope>provided</scope>
3434
</dependency>
3535

3636
<dependency>
3737
<groupId>io.ebean.test</groupId>
3838
<artifactId>ebean-test-docker</artifactId>
39-
<version>2.7.2</version>
39+
<version>2.10.2</version>
4040
</dependency>
4141

4242
<!-- Not strictly required but bring in H2 Driver because we use it so much -->

src/main/java/io/ebean/test/config/platform/Config.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ class Config {
5555
this.properties = serverConfig.getProperties();
5656
}
5757

58+
void setSchemaFromDbName(String newDbName) {
59+
this.schema = databaseName;
60+
this.databaseName = newDbName;
61+
}
62+
5863
/**
5964
* Set the docker platform name (when it is different from the test platform name).
6065
* For example test platform name of "postgis" maps to "postgres" docker platform name.
@@ -82,15 +87,17 @@ void ddlMode(String defaultMode) {
8287
disableMigrationRun();
8388
break;
8489
}
85-
case "migrationdropcreate":
86-
case "migrationsdropcreate": {
90+
case "migrationonly":
91+
case "migrationsonly": {
8792
setMigrationRun();
88-
containerDropCreate = true;
8993
break;
9094
}
95+
case "migrationdropcreate":
96+
case "migrationsdropcreate":
9197
case "migration":
9298
case "migrations": {
9399
setMigrationRun();
100+
containerDropCreate = true;
94101
break;
95102
}
96103
case "createonly": {
@@ -152,15 +159,15 @@ private void setDdlProperty(String key) {
152159
setProperty("ebean." + db + ".ddl." + key, "true");
153160
}
154161

155-
void datasourceDefaults() {
156-
datasourceDefaults(platform);
162+
DataSourceConfig datasourceDefaults() {
163+
return datasourceDefaults(platform);
157164
}
158165

159166
void extraDatasourceDefaults() {
160167
datasourceDefaults("extraDb");
161168
}
162169

163-
private void datasourceDefaults(String platform) {
170+
private DataSourceConfig datasourceDefaults(String platform) {
164171
// default username to databaseName
165172
if (username == null) {
166173
throw new IllegalStateException("username not set?");
@@ -188,6 +195,7 @@ private void datasourceDefaults(String platform) {
188195
throw new IllegalStateException("JDBC Driver " + driverClass + " does not appear to be in the classpath?");
189196
}
190197
}
198+
return ds;
191199
}
192200

193201
String datasourceProperty(String key, String defaultValue) {
@@ -252,6 +260,10 @@ void setUsernameDefault() {
252260
this.username = getKey("username", defaultValue);
253261
}
254262

263+
void setUsernameDefaultSchema() {
264+
this.username = getKey("username", schema);
265+
}
266+
255267
void setExtraUsernameDefault() {
256268
this.username = getKey("extraDb.username", this.databaseName);
257269
}
@@ -350,6 +362,9 @@ private void initDockerProperties() {
350362

351363
dockerProperties.setProperty(dockerKey("port"), String.valueOf(port));
352364
dockerProperties.setProperty(dockerKey("dbName"), databaseName);
365+
if (schema != null) {
366+
dockerProperties.setProperty(dockerKey("schema"), schema);
367+
}
353368
dockerProperties.setProperty(dockerKey("username"), username);
354369
dockerProperties.setProperty(dockerKey("password"), password);
355370
dockerProperties.setProperty(dockerKey("url"), url);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.ebean.test.config.platform;
2+
3+
import io.ebean.datasource.DataSourceConfig;
4+
5+
import java.util.Properties;
6+
7+
class NuoDBSetup implements PlatformSetup {
8+
9+
@Override
10+
public Properties setup(Config config) {
11+
// use testdb as our standard db name and instead use schema
12+
config.setSchemaFromDbName("testdb");
13+
config.ddlMode("dropCreate");
14+
config.setDefaultPort(8888);
15+
config.setUsernameDefaultSchema();
16+
config.setPasswordDefault();
17+
config.setUrl("jdbc:com.nuodb://localhost/testdb");
18+
config.setDriver("com.nuodb.jdbc.Driver");
19+
20+
final DataSourceConfig dsConfig = config.datasourceDefaults();
21+
dsConfig.setSchema(config.getSchema());
22+
return dockerProperties(config);
23+
}
24+
25+
private Properties dockerProperties(Config dbConfig) {
26+
27+
if (!dbConfig.isUseDocker()) {
28+
return new Properties();
29+
}
30+
31+
dbConfig.setDockerVersion("4.0.0");
32+
return dbConfig.getDockerProperties();
33+
}
34+
35+
@Override
36+
public void setupExtraDbDataSource(Config config) {
37+
// not supported yet
38+
}
39+
40+
@Override
41+
public boolean isLocal() {
42+
return false;
43+
}
44+
45+
}

src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class PlatformAutoConfig {
2626
KNOWN_PLATFORMS.put("sqlite", new SqliteSetup());
2727
KNOWN_PLATFORMS.put("postgres", new PostgresSetup());
2828
KNOWN_PLATFORMS.put("postgis", new PostgisSetup());
29+
KNOWN_PLATFORMS.put("nuodb", new NuoDBSetup());
2930
KNOWN_PLATFORMS.put("mysql", new MySqlSetup());
3031
KNOWN_PLATFORMS.put("mariadb", new MariaDBSetup());
3132
KNOWN_PLATFORMS.put("sqlserver", new SqlServerSetup());

0 commit comments

Comments
 (0)