From c6fc7a032db484b31604c831fb35eff0c7400cd7 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 4 Oct 2017 19:44:29 +1300 Subject: [PATCH] #1147 - Refactor move DbMigration internals into io.ebeaninternal - change to use DbMigration.create() - DbOffline & ServerConfig --- .../java/io/ebean/config/ServerConfig.java | 18 +++--------------- .../server/core/DefaultContainer.java | 8 ++++++-- .../server/core/InternalConfiguration.java | 4 +++- .../GeneratedPropertyFactory.java | 4 ++-- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/ebean/config/ServerConfig.java b/src/main/java/io/ebean/config/ServerConfig.java index 8f8bdec32..e62f4356a 100644 --- a/src/main/java/io/ebean/config/ServerConfig.java +++ b/src/main/java/io/ebean/config/ServerConfig.java @@ -2,18 +2,16 @@ package io.ebean.config; import com.fasterxml.jackson.core.JsonFactory; import io.ebean.EbeanServerFactory; -import io.ebean.annotation.PersistBatch; import io.ebean.PersistenceContextScope; -import io.ebean.annotation.Platform; import io.ebean.Query; import io.ebean.Transaction; import io.ebean.annotation.Encrypted; +import io.ebean.annotation.PersistBatch; +import io.ebean.annotation.Platform; import io.ebean.cache.ServerCachePlugin; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbEncrypt; import io.ebean.config.dbplatform.DbType; -import io.ebeaninternal.dbmigration.DbOffline; -import io.ebean.migration.MigrationRunner; import io.ebean.event.BeanFindController; import io.ebean.event.BeanPersistController; import io.ebean.event.BeanPersistListener; @@ -28,8 +26,8 @@ import io.ebean.event.changelog.ChangeLogRegister; import io.ebean.event.readaudit.ReadAuditLogger; import io.ebean.event.readaudit.ReadAuditPrepare; import io.ebean.meta.MetaInfoManager; +import io.ebean.migration.MigrationRunner; import io.ebean.util.StringHelper; - import org.avaje.datasource.DataSourceConfig; import javax.sql.DataSource; @@ -1670,16 +1668,6 @@ public class ServerConfig { this.encryptor = encryptor; } - /** - * Return true if the instance is coming up in offline mode. - *

- * Offline mode is mostly used when generating DB migration. - *

- */ - public boolean isOfflineMode() { - return dbOffline || DbOffline.isSet(); - } - /** * Return true if the EbeanServer instance should be created in offline mode. */ diff --git a/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java b/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java index 38a08b638..c2564af6a 100644 --- a/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java +++ b/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java @@ -278,7 +278,7 @@ public class DefaultContainer implements SpiContainer { private DataSource getDataSourceFromConfig(ServerConfig config) { - if (config.isOfflineMode()) { + if (isOfflineMode(config)) { logger.debug("... DbOffline using platform [{}]", DbOffline.getPlatform()); return null; } @@ -332,6 +332,10 @@ public class DefaultContainer implements SpiContainer { } } + private boolean isOfflineMode(ServerConfig serverConfig) { + return serverConfig.isDbOffline() || DbOffline.isSet(); + } + /** * Check the autoCommit and Transaction Isolation levels of the DataSource. *

@@ -344,7 +348,7 @@ public class DefaultContainer implements SpiContainer { */ private boolean checkDataSource(ServerConfig serverConfig) { - if (serverConfig.isOfflineMode()) { + if (isOfflineMode(serverConfig)) { return false; } diff --git a/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java b/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java index 2141012d9..26c1cac76 100644 --- a/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java +++ b/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java @@ -19,6 +19,7 @@ import io.ebean.plugin.SpiServer; import io.ebeaninternal.api.SpiBackgroundExecutor; import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.api.SpiJsonContext; +import io.ebeaninternal.dbmigration.DbOffline; import io.ebeaninternal.server.autotune.AutoTuneService; import io.ebeaninternal.server.autotune.service.AutoTuneServiceFactory; import io.ebeaninternal.server.cache.DefaultCacheAdapter; @@ -331,7 +332,8 @@ public class InternalConfiguration { } public GeneratedPropertyFactory getGeneratedPropertyFactory() { - return new GeneratedPropertyFactory(serverConfig, bootupClasses.getIdGenerators()); + boolean offlineMode = serverConfig.isDbOffline() || DbOffline.isSet(); + return new GeneratedPropertyFactory(offlineMode, serverConfig, bootupClasses.getIdGenerators()); } /** diff --git a/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java b/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java index cdce7e3bf..f5066cfbd 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java +++ b/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java @@ -35,7 +35,7 @@ public class GeneratedPropertyFactory { private final Map idGeneratorMap = new HashMap<>(); - public GeneratedPropertyFactory(ServerConfig serverConfig, List idGenerators) { + public GeneratedPropertyFactory(boolean offlineMode, ServerConfig serverConfig, List idGenerators) { this.classLoadConfig = serverConfig.getClassLoadConfig(); this.insertFactory = new InsertTimestampFactory(classLoadConfig); @@ -45,7 +45,7 @@ public class GeneratedPropertyFactory { if (currentUserProvider != null) { generatedWhoCreated = new GeneratedWhoCreated(currentUserProvider); generatedWhoModified = new GeneratedWhoModified(currentUserProvider); - } else if (serverConfig.isOfflineMode()) { + } else if (offlineMode) { currentUserProvider = new DummyCurrentUser(); generatedWhoCreated = new GeneratedWhoCreated(currentUserProvider); generatedWhoModified = new GeneratedWhoModified(currentUserProvider);