diff --git a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java index dd83c56af..73c8d8274 100644 --- a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java @@ -2,13 +2,10 @@ package io.ebean.config.dbplatform; import io.ebean.BackgroundExecutor; import io.ebean.Query; -import io.ebean.config.CustomDbTypeMapping; -import io.ebean.config.DbTypeConfig; import io.ebean.annotation.PersistBatch; import io.ebean.annotation.Platform; -import io.ebean.config.ServerConfig; -import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebean.config.CustomDbTypeMapping; +import io.ebean.config.DbTypeConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -162,8 +159,6 @@ public class DatabasePlatform { */ protected PersistBatch persistBatchOnCascade = PersistBatch.ALL; - protected PlatformDdl platformDdl; - /** * The maximum length of table names - used specifically when derived * default table names for intersection tables. @@ -276,23 +271,6 @@ public class DatabasePlatform { return maxConstraintNameLength; } - /** - * Return the platform specific DDL. - */ - public PlatformDdl getPlatformDdl() { - return platformDdl; - } - - /** - * Create and return a DDL handler for generating DDL scripts. - */ - public DdlHandler createDdlHandler(ServerConfig serverConfig) { - if (platformDdl == null) { - throw new IllegalStateException("Platform " + getName() + " has no DDL Handler"); - } - return platformDdl.createDdlHandler(serverConfig); - } - /** * Return true if the JDBC driver does not allow additional queries to execute * when a resultSet is being 'streamed' as is the case with findEach() etc. diff --git a/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java b/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java index b83723db1..0c9558cc4 100644 --- a/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java +++ b/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java @@ -8,7 +8,6 @@ import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.SqlErrorCodes; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.DB2Ddl; import javax.sql.DataSource; import java.sql.Types; @@ -24,7 +23,6 @@ public class DB2Platform extends DatabasePlatform { this.maxTableNameLength = 18; this.maxConstraintNameLength = 18; this.sqlLimiter = new Db2SqlLimiter(); - this.platformDdl = new DB2Ddl(this); this.dbIdentity.setSupportsGetGeneratedKeys(true); this.dbIdentity.setSupportsSequence(true); diff --git a/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java b/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java index f97e641b4..7c3c78a36 100644 --- a/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java +++ b/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java @@ -1,15 +1,14 @@ package io.ebean.config.dbplatform.h2; import io.ebean.BackgroundExecutor; -import io.ebean.annotation.Platform; import io.ebean.Query; +import io.ebean.annotation.Platform; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.SqlErrorCodes; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.H2Ddl; import javax.sql.DataSource; @@ -22,7 +21,6 @@ public class H2Platform extends DatabasePlatform { super(); this.platform = Platform.H2; this.dbEncrypt = new H2DbEncrypt(); - this.platformDdl = new H2Ddl(this); this.historySupport = new H2HistorySupport(); this.nativeUuidType = true; this.dbDefaultValue.setNow("now()"); diff --git a/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java b/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java index 59d089297..80a3a032e 100644 --- a/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java @@ -9,7 +9,6 @@ import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.h2.H2DbEncrypt; import io.ebean.config.dbplatform.h2.H2SequenceIdGenerator; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl; import javax.sql.DataSource; @@ -22,7 +21,6 @@ public class HsqldbPlatform extends DatabasePlatform { super(); this.platform = Platform.HSQLDB; this.dbEncrypt = new H2DbEncrypt(); - this.platformDdl = new HsqldbDdl(this); this.dbIdentity.setIdType(IdType.IDENTITY); this.dbIdentity.setSupportsGetGeneratedKeys(true); diff --git a/src/main/java/io/ebean/config/dbplatform/mysql/MySqlPlatform.java b/src/main/java/io/ebean/config/dbplatform/mysql/MySqlPlatform.java index 13916e321..93b82d389 100644 --- a/src/main/java/io/ebean/config/dbplatform/mysql/MySqlPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/mysql/MySqlPlatform.java @@ -1,15 +1,14 @@ package io.ebean.config.dbplatform.mysql; import io.ebean.BackgroundExecutor; -import io.ebean.annotation.Platform; import io.ebean.Query; +import io.ebean.annotation.Platform; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.SqlErrorCodes; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.MySqlDdl; import javax.sql.DataSource; import java.sql.Types; @@ -32,7 +31,6 @@ public class MySqlPlatform extends DatabasePlatform { this.useExtraTransactionOnIterateSecondaryQueries = true; this.selectCountWithAlias = true; this.dbEncrypt = new MySqlDbEncrypt(); - this.platformDdl = new MySqlDdl(this); this.historySupport = new MySqlHistorySupport(); this.columnAliasPrefix = null; diff --git a/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java b/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java index 71623ca39..57bebab7d 100644 --- a/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java @@ -1,8 +1,8 @@ package io.ebean.config.dbplatform.oracle; import io.ebean.BackgroundExecutor; -import io.ebean.annotation.Platform; import io.ebean.Query; +import io.ebean.annotation.Platform; import io.ebean.config.dbplatform.BasicSqlAnsiLimiter; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; @@ -10,7 +10,6 @@ import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.RownumSqlLimiter; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.Oracle10Ddl; import javax.sql.DataSource; import java.sql.Types; @@ -28,7 +27,6 @@ public class OraclePlatform extends DatabasePlatform { this.dbEncrypt = new OracleDbEncrypt(); this.sqlLimiter = new RownumSqlLimiter(); this.basicSqlLimiter = new BasicSqlAnsiLimiter(); - this.platformDdl = new Oracle10Ddl(this); this.historySupport = new OracleDbHistorySupport(); // Not using getGeneratedKeys as instead we will diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java index ad8cab667..04d1b0384 100644 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java @@ -1,17 +1,14 @@ package io.ebean.config.dbplatform.postgres; import io.ebean.BackgroundExecutor; -import io.ebean.annotation.Platform; import io.ebean.Query; -import io.ebean.config.ServerConfig; +import io.ebean.annotation.Platform; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.PlatformIdGenerator; import io.ebean.config.dbplatform.SqlErrorCodes; -import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.PostgresDdl; import javax.sql.DataSource; import java.sql.Types; @@ -36,7 +33,6 @@ public class PostgresPlatform extends DatabasePlatform { this.dbEncrypt = new PostgresDbEncrypt(); this.historySupport = new PostgresHistorySupport(); - this.platformDdl = new PostgresDdl(this); // Use Identity and getGeneratedKeys this.dbIdentity.setIdType(IdType.IDENTITY); @@ -90,14 +86,6 @@ public class PostgresPlatform extends DatabasePlatform { return new DbPlatformType("geometry(" + type + "," + srid + ")"); } - /** - * Return a DdlHandler instance for generating DDL for the specific platform. - */ - @Override - public DdlHandler createDdlHandler(ServerConfig serverConfig) { - return this.platformDdl.createDdlHandler(serverConfig); - } - /** * Create a Postgres specific sequence IdGenerator. */ diff --git a/src/main/java/io/ebean/config/dbplatform/sqlite/SQLitePlatform.java b/src/main/java/io/ebean/config/dbplatform/sqlite/SQLitePlatform.java index ddc44e1ec..a9a8dd65c 100644 --- a/src/main/java/io/ebean/config/dbplatform/sqlite/SQLitePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/sqlite/SQLitePlatform.java @@ -5,7 +5,6 @@ import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.SQLiteDdl; import java.sql.Types; @@ -14,8 +13,6 @@ public class SQLitePlatform extends DatabasePlatform { public SQLitePlatform() { super(); this.platform = Platform.SQLITE; - this.platformDdl = new SQLiteDdl(this); - this.dbIdentity.setIdType(IdType.IDENTITY); this.dbIdentity.setSupportsGetGeneratedKeys(false); this.dbIdentity.setSupportsSequence(false); diff --git a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerPlatform.java b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerPlatform.java index 266f74fb4..ef3b38c31 100644 --- a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerPlatform.java @@ -7,7 +7,7 @@ import io.ebean.config.dbplatform.DbPlatformType; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.dbplatform.SqlErrorCodes; -import io.ebeaninternal.dbmigration.ddlgeneration.platform.SqlServerDdl; + import java.sql.Types; /** @@ -25,7 +25,6 @@ public class SqlServerPlatform extends DatabasePlatform { this.selectCountWithAlias = true; this.sqlLimiter = new SqlServerSqlLimiter(); this.basicSqlLimiter = new SqlServerBasicSqlLimiter(); - this.platformDdl = new SqlServerDdl(this); this.historySupport = new SqlServerHistorySupport(); this.dbIdentity.setIdType(IdType.IDENTITY); this.dbIdentity.setSupportsGetGeneratedKeys(true); diff --git a/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java b/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java index 8cf77b69a..2e7f73b44 100644 --- a/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java +++ b/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java @@ -13,6 +13,7 @@ import io.ebean.config.ServerConfig; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.event.readaudit.ReadAuditLogger; import io.ebean.event.readaudit.ReadAuditPrepare; +import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; import io.ebeaninternal.server.core.timezone.DataTimeZone; import io.ebeaninternal.server.deploy.BeanDescriptor; import io.ebeaninternal.server.query.CQuery; @@ -210,4 +211,9 @@ public interface SpiEbeanServer extends EbeanServer, BeanLoader, BeanCollectionL * Check for slow query event. */ void slowQueryCheck(long executionTimeMicros, int rowCount, SpiQuery query); + + /** + * Create DDL handler given the platform and configuration of the server. + */ + DdlHandler createDdlHandler(); } diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java b/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java index d404ebf3b..c3b70769f 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java @@ -1,6 +1,7 @@ package io.ebeaninternal.dbmigration.model; import io.ebean.config.DbConstraintNaming; +import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite; import io.ebeaninternal.dbmigration.ddlgeneration.platform.DefaultConstraintMaxLength; @@ -8,7 +9,6 @@ import io.ebeaninternal.dbmigration.migration.ChangeSet; import io.ebeaninternal.dbmigration.model.build.ModelBuildBeanVisitor; import io.ebeaninternal.dbmigration.model.build.ModelBuildContext; import io.ebeaninternal.dbmigration.model.visitor.VisitAllUsing; -import io.ebeaninternal.api.SpiEbeanServer; import java.io.IOException; @@ -147,7 +147,7 @@ public class CurrentModel { * Return the platform specific DdlHandler (to generate DDL). */ private DdlHandler handler() { - return server.getDatabasePlatform().createDdlHandler(server.getServerConfig()); + return server.createDdlHandler(); } /** diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java b/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java index aa5efaa5a..facb992de 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java @@ -6,9 +6,11 @@ import io.ebean.config.dbplatform.DatabasePlatform; import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer; import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; import io.ebeaninternal.dbmigration.migration.ChangeSet; import io.ebeaninternal.dbmigration.migration.ChangeSetType; import io.ebeaninternal.dbmigration.migration.Migration; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,12 +29,12 @@ public class PlatformDdlWriter { private final ServerConfig serverConfig; - private final DatabasePlatform platform; - private final DbMigrationConfig config; + private final PlatformDdl platformDdl; + public PlatformDdlWriter(DatabasePlatform platform, ServerConfig serverConfig, DbMigrationConfig config) { - this.platform = platform; + this.platformDdl = PlatformDdlBuilder.create(platform); this.serverConfig = serverConfig; this.config = config; } @@ -106,7 +108,7 @@ public class PlatformDdlWriter { * Return the platform specific DdlHandler (to generate DDL). */ protected DdlHandler handler() { - return platform.createDdlHandler(serverConfig); + return platformDdl.createDdlHandler(serverConfig); } /** diff --git a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index 6532d9535..34087d0f9 100644 --- a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -53,6 +53,7 @@ import io.ebean.text.csv.CsvReader; import io.ebean.text.json.JsonContext; import io.ebeaninternal.api.*; import io.ebeaninternal.api.SpiQuery.Type; +import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; import io.ebeaninternal.server.autotune.AutoTuneService; import io.ebeaninternal.server.core.timezone.DataTimeZone; import io.ebeaninternal.server.deploy.BeanDescriptor; @@ -329,6 +330,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { return databasePlatform; } + @Override + public DdlHandler createDdlHandler() { + return PlatformDdlBuilder.create(databasePlatform).createDdlHandler(serverConfig); + } + @Override public DataTimeZone getDataTimeZone() { return dataTimeZone; diff --git a/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java new file mode 100644 index 000000000..13b31d816 --- /dev/null +++ b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java @@ -0,0 +1,44 @@ +package io.ebeaninternal.server.core; + +import io.ebean.config.dbplatform.DatabasePlatform; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.DB2Ddl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.H2Ddl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.MySqlDdl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.Oracle10Ddl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.PostgresDdl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.SQLiteDdl; +import io.ebeaninternal.dbmigration.ddlgeneration.platform.SqlServerDdl; + +public class PlatformDdlBuilder { + + + public static PlatformDdl create(DatabasePlatform platform) { + + switch (platform.getPlatform()) { + case H2: + return new H2Ddl(platform); + case DB2: + return new DB2Ddl(platform); + case MYSQL: + return new MySqlDdl(platform); + case HSQLDB: + return new HsqldbDdl(platform); + case ORACLE: + return new Oracle10Ddl(platform); + case SQLITE: + return new SQLiteDdl(platform); + case GENERIC: + return new PlatformDdl(platform); + case POSTGRES: + return new PostgresDdl(platform); + case SQLSERVER: + return new SqlServerDdl(platform); + case SQLANYWHERE: + return new PlatformDdl(platform); + default: + return new PlatformDdl(platform); + } + } +} diff --git a/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java b/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java index b265c0a46..fff3a8354 100644 --- a/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java @@ -2,17 +2,18 @@ package io.ebean.config.dbplatform; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class H2PlatformTest { - H2Platform mySqlPlatform = new H2Platform(); - @Test public void testTypeConversion() { - PlatformDdl ddl = mySqlPlatform.getPlatformDdl(); + + PlatformDdl ddl = PlatformDdlBuilder.create(new H2Platform()); + assertThat(ddl.convert("clob", false)).isEqualTo("clob"); assertThat(ddl.convert("json", false)).isEqualTo("clob"); assertThat(ddl.convert("jsonb", false)).isEqualTo("clob"); diff --git a/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java index 83c209489..74a789348 100644 --- a/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java @@ -4,6 +4,7 @@ import io.ebean.config.DbTypeConfig; import io.ebean.config.ServerConfig; import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -14,7 +15,7 @@ public class MySqlPlatformTest { @Test public void testTypeConversion() { - PlatformDdl ddl = mySqlPlatform.getPlatformDdl(); + PlatformDdl ddl = PlatformDdlBuilder.create(mySqlPlatform); assertThat(ddl.convert("clob", false)).isEqualTo("longtext"); assertThat(ddl.convert("json", false)).isEqualTo("longtext"); assertThat(ddl.convert("jsonb", false)).isEqualTo("longtext"); diff --git a/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java b/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java index b91dbd87d..4f21ae90c 100644 --- a/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java @@ -4,6 +4,7 @@ import io.ebean.config.DbTypeConfig; import io.ebean.config.ServerConfig; import io.ebean.config.dbplatform.oracle.OraclePlatform; import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -15,7 +16,7 @@ public class OraclePlatformTest { @Test public void testTypeConversion() { - PlatformDdl ddl = platform.getPlatformDdl(); + PlatformDdl ddl = PlatformDdlBuilder.create(platform); assertThat(ddl.convert("clob", false)).isEqualTo("clob"); assertThat(ddl.convert("blob", false)).isEqualTo("blob"); diff --git a/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java index 2219ed924..f23370a43 100644 --- a/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java @@ -3,6 +3,7 @@ package io.ebean.config.dbplatform; import io.ebean.config.DbTypeConfig; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -14,7 +15,7 @@ public class PostgresPlatformTest { public void testTypeConversion() { PostgresPlatform platform = new PostgresPlatform(); - PlatformDdl ddl = platform.getPlatformDdl(); + PlatformDdl ddl = PlatformDdlBuilder.create(platform); assertThat(ddl.convert("clob", false)).isEqualTo("text"); assertThat(ddl.convert("blob", false)).isEqualTo("bytea"); diff --git a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java index 9e6b16af6..5fb249e89 100644 --- a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java +++ b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java @@ -15,6 +15,7 @@ import io.ebean.meta.MetaInfoManager; import io.ebean.plugin.SpiServer; import io.ebean.text.csv.CsvReader; import io.ebean.text.json.JsonContext; +import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; import io.ebeaninternal.server.core.timezone.DataTimeZone; import io.ebeaninternal.server.deploy.BeanDescriptor; import io.ebeaninternal.server.query.CQuery; @@ -87,6 +88,11 @@ public class TDSpiEbeanServer implements SpiEbeanServer { return null; } + @Override + public DdlHandler createDdlHandler() { + return null; + } + @Override public CallStack createCallStack() { return null; diff --git a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java index 0dd18a380..210e8195c 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java @@ -3,12 +3,14 @@ package io.ebeaninternal.dbmigration.ddlgeneration; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.config.ServerConfig; +import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebean.config.dbplatform.sqlserver.SqlServerPlatform; +import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.dbmigration.migration.ChangeSet; import io.ebeaninternal.dbmigration.model.CurrentModel; -import io.ebeaninternal.api.SpiEbeanServer; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Ignore; import org.junit.Test; @@ -17,18 +19,22 @@ import static org.assertj.core.api.Assertions.assertThat; public class BaseDdlHandlerTest extends BaseTestCase { - ServerConfig serverConfig = new ServerConfig(); + private ServerConfig serverConfig = new ServerConfig(); + + private DdlHandler handler(DatabasePlatform platform) { + return PlatformDdlBuilder.create(platform).createDdlHandler(serverConfig); + } private DdlHandler h2Handler() { - return new H2Platform().createDdlHandler(serverConfig); + return handler(new H2Platform()); } private DdlHandler postgresHandler() { - return new PostgresPlatform().createDdlHandler(serverConfig); + return handler(new PostgresPlatform()); } private DdlHandler sqlserverHandler() { - return new SqlServerPlatform().createDdlHandler(serverConfig); + return handler(new SqlServerPlatform()); } @Test diff --git a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java index 233ae6561..961207797 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java @@ -11,6 +11,7 @@ import io.ebeaninternal.dbmigration.migration.AddTableComment; import io.ebeaninternal.dbmigration.migration.AlterColumn; import io.ebeaninternal.dbmigration.migration.Column; import io.ebeaninternal.dbmigration.migration.CreateTable; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import java.io.IOException; @@ -21,12 +22,14 @@ import static org.assertj.core.api.Assertions.assertThat; public class BaseTableDdlTest { - ServerConfig serverConfig = new ServerConfig(); + private ServerConfig serverConfig = new ServerConfig(); + + private PlatformDdl h2ddl = PlatformDdlBuilder.create(new H2Platform()); @Test public void testAlterColumn() throws IOException { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new H2Platform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, h2ddl); DdlWrite write = new DdlWrite(); @@ -45,7 +48,7 @@ public class BaseTableDdlTest { @Test public void testAddColumn_withTypeConversion() throws IOException { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new OraclePlatform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, PlatformDdlBuilder.create(new OraclePlatform())); DdlWrite write = new DdlWrite(); @@ -62,7 +65,7 @@ public class BaseTableDdlTest { @Test public void testAlterColumnComment() throws IOException { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new H2Platform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, h2ddl); DdlWrite write = new DdlWrite(); @@ -80,7 +83,7 @@ public class BaseTableDdlTest { @Test public void testAddTableComment() throws IOException { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new H2Platform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, h2ddl); DdlWrite write = new DdlWrite(); @@ -97,7 +100,7 @@ public class BaseTableDdlTest { @Test public void testAddTableComment_mysql() throws IOException { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new MySqlPlatform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, PlatformDdlBuilder.create(new MySqlPlatform())); DdlWrite write = new DdlWrite(); @@ -114,7 +117,7 @@ public class BaseTableDdlTest { @Test public void testGenerate() throws Exception { - BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, new H2Platform().getPlatformDdl()); + BaseTableDdl ddlGen = new BaseTableDdl(serverConfig, h2ddl); DdlWrite write = new DdlWrite(); diff --git a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java index 7755d436f..2eb35187d 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java @@ -7,6 +7,7 @@ import io.ebeaninternal.dbmigration.model.CurrentModel; import io.ebeaninternal.dbmigration.model.MConfiguration; import io.ebeaninternal.dbmigration.model.ModelContainer; import io.ebeaninternal.api.SpiEbeanServer; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.StrictAssertions.assertThat; @@ -29,7 +30,7 @@ public class H2HistoryDdlTest { DdlWrite write = new DdlWrite(new MConfiguration(), modelContainer); H2Platform h2Platform = new H2Platform(); - PlatformDdl h2Ddl = h2Platform.getPlatformDdl(); + PlatformDdl h2Ddl = PlatformDdlBuilder.create(h2Platform); h2Ddl.configure(ebeanServer.getServerConfig()); h2Ddl.regenerateHistoryTriggers(write, update); diff --git a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java index 6b434f809..0e4d5e556 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java @@ -8,6 +8,7 @@ import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.oracle.OraclePlatform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebeaninternal.dbmigration.migration.AlterColumn; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -16,11 +17,11 @@ import static org.junit.Assert.assertNull; public class PlatformDdl_AlterColumnTest { - PlatformDdl h2Ddl = new H2Platform().getPlatformDdl(); - PlatformDdl pgDdl = new PostgresPlatform().getPlatformDdl(); - PlatformDdl mysqlDdl = new MySqlPlatform().getPlatformDdl(); - PlatformDdl oraDdl = new OraclePlatform().getPlatformDdl(); - PlatformDdl sqlServerDdl = new SqlServerPlatform().getPlatformDdl(); + PlatformDdl h2Ddl = PlatformDdlBuilder.create(new H2Platform()); + PlatformDdl pgDdl = PlatformDdlBuilder.create(new PostgresPlatform()); + PlatformDdl mysqlDdl = PlatformDdlBuilder.create(new MySqlPlatform()); + PlatformDdl oraDdl = PlatformDdlBuilder.create(new OraclePlatform()); + PlatformDdl sqlServerDdl = PlatformDdlBuilder.create(new SqlServerPlatform()); { ServerConfig serverConfig = Ebean.getDefaultServer().getPluginApi().getServerConfig(); diff --git a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java index 2e2df7173..f7fd62cbe 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java @@ -5,6 +5,7 @@ import io.ebean.config.dbplatform.sqlserver.SqlServerPlatform; import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.oracle.OraclePlatform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; +import io.ebeaninternal.server.core.PlatformDdlBuilder; import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -12,11 +13,11 @@ import static org.junit.Assert.assertEquals; public class PlatformDdl_dropUniqueConstraintTest { - PlatformDdl h2Ddl = new H2Platform().getPlatformDdl(); - PlatformDdl pgDdl = new PostgresPlatform().getPlatformDdl(); - PlatformDdl mysqlDdl = new MySqlPlatform().getPlatformDdl(); - PlatformDdl oraDdl = new OraclePlatform().getPlatformDdl(); - PlatformDdl sqlServerDdl = new SqlServerPlatform().getPlatformDdl(); + private PlatformDdl h2Ddl = PlatformDdlBuilder.create(new H2Platform()); + private PlatformDdl pgDdl = PlatformDdlBuilder.create(new PostgresPlatform()); + private PlatformDdl mysqlDdl = PlatformDdlBuilder.create(new MySqlPlatform()); + private PlatformDdl oraDdl = PlatformDdlBuilder.create(new OraclePlatform()); + private PlatformDdl sqlServerDdl = PlatformDdlBuilder.create(new SqlServerPlatform()); @Test public void test() throws Exception {