From 1f9cf1e4b7d13911f1a2d3c01e41afe77cc47c78 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 3 Nov 2023 22:58:11 +1300 Subject: [PATCH] Split DatabaseBuilder interface separating the setters n getters adding DatabaseBuilder.Settings So DatabaseBuilder.Settings has all the getters for code looking to read the configuration that has been set. So DatabaseBuilder now just has the setter methods. Use DatabaseBuilder.settings() to access the settings and read the config that has been set. --- composites/ebean/pom.xml | 4 +- .../main/java/io/ebean/DatabaseBuilder.java | 1695 +++++++++-------- .../main/java/io/ebean/DatabaseFactory.java | 5 +- .../java/io/ebean/config/DatabaseConfig.java | 7 +- .../main/java/io/ebean/plugin/SpiServer.java | 2 +- .../io/ebean/config/DatabaseConfigTest.java | 83 +- ebean-bom/pom.xml | 4 +- .../io/ebean/core/type/ExtraTypeFactory.java | 2 +- .../ebean/core/type/ScalarTypeSetFactory.java | 2 +- .../io/ebeaninternal/api/GeoTypeProvider.java | 2 +- .../server/cache/CacheManagerOptions.java | 4 +- .../server/core/ClassPathScanners.java | 2 +- .../server/core/DatabasePlatformFactory.java | 2 +- .../server/core/DefaultContainer.java | 22 +- .../server/core/DefaultServer.java | 6 +- .../server/core/InitDataSource.java | 6 +- .../server/core/InternalConfiguration.java | 10 +- .../core/bootup/BootupClassPathSearch.java | 4 +- .../server/core/bootup/BootupClasses.java | 2 +- .../server/deploy/BeanDescriptor.java | 2 +- .../server/deploy/BeanDescriptorManager.java | 12 +- .../server/deploy/BeanDescriptorMap.java | 2 +- .../deploy/BeanLifecycleAdapterFactory.java | 2 +- .../GeneratedPropertyFactory.java | 2 +- .../deploy/meta/DeployBeanDescriptor.java | 4 +- .../server/deploy/parse/DeployUtil.java | 2 +- .../deploy/parse/ReadAnnotationConfig.java | 2 +- .../server/deploy/parse/ReadAnnotations.java | 2 +- .../server/query/CQueryEngine.java | 2 +- .../TransactionManagerOptions.java | 6 +- .../server/type/DefaultTypeFactory.java | 4 +- .../server/type/DefaultTypeManager.java | 14 +- .../server/core/InitDataSourceTest.java | 36 +- .../deploy/parse/AnnotationClassTest.java | 6 +- .../server/type/DefaultTypeFactoryTest.java | 3 +- .../server/type/DefaultTypeManagerTest.java | 2 +- .../server/type/TestTypeManager.java | 4 +- .../dbmigration/DdlGenerator.java | 4 +- .../dbmigration/DefaultDbMigration.java | 5 +- .../io/ebeaninternal/dbmigration/Detect.java | 2 +- .../ddlgeneration/BaseDdlHandler.java | 2 +- .../ddlgeneration/platform/BaseTableDdl.java | 2 +- .../ddlgeneration/platform/ClickHouseDdl.java | 2 +- .../platform/ClickHouseDdlHandler.java | 2 +- .../platform/ClickHouseTableDdl.java | 2 +- .../ddlgeneration/platform/Db2HistoryDdl.java | 2 +- .../platform/DbTableBasedHistoryDdl.java | 2 +- .../platform/DbTriggerBasedHistoryDdl.java | 2 +- .../platform/HanaHistoryDdl.java | 2 +- .../platform/MariaDbHistoryDdl.java | 2 +- .../platform/NoHistorySupportDdl.java | 2 +- .../ddlgeneration/platform/PlatformDdl.java | 4 +- .../platform/PlatformHistoryDdl.java | 2 +- .../platform/SqlServerHistoryDdl.java | 2 +- .../dbmigration/model/PlatformDdlWriter.java | 10 +- .../ddlgeneration/BaseDdlHandlerTest.java | 2 +- .../platform/BaseTableDdlTest.java | 2 +- .../platform/PlatformDdl_AlterColumnTest.java | 2 +- .../platform/PlatformDdl_CreateIndexTest.java | 3 +- .../PlatformDdl_dropUniqueConstraintTest.java | 2 +- .../build/ModelBuildBeanVisitorTest.java | 2 +- .../postgis/PostgisExtraTypeFactory.java | 2 +- .../postgis/PostgisGeoTypeBindProvider.java | 2 +- .../io/ebean/redis/RedisCacheFactory.java | 4 +- .../java/io/ebean/redis/RedisCachePlugin.java | 2 +- ebean-test/pom.xml | 4 +- .../test/config/AutoConfigureForTesting.java | 14 +- .../io/ebean/test/config/platform/Config.java | 4 +- .../config/platform/PlatformAutoConfig.java | 4 +- .../config/provider/ProviderAutoConfig.java | 4 +- .../test/config/platform/ConfigTest.java | 14 +- .../xtest/config/DbMigrationConfigTest.java | 2 +- .../config/PlatformNoGeneratedKeysTest.java | 2 +- .../dbmigration/DbMigrationGenerateTest.java | 2 +- .../xtest/event/BeanFindControllerTest.java | 4 +- .../xtest/internal/api/TDSpiEbeanServer.java | 2 +- .../ebean/xtest/internal/api/TDSpiServer.java | 2 +- .../server/text/json/DJsonScalarTest.java | 2 +- .../tests/basic/TestPersistenceContext.java | 4 +- .../basic/TestPersistenceContextMany.java | 4 +- .../org/tests/json/TestJsonSourceDefault.java | 2 +- .../sqlserver/SqlServerPlatformTest.java | 4 +- 82 files changed, 1074 insertions(+), 1045 deletions(-) diff --git a/composites/ebean/pom.xml b/composites/ebean/pom.xml index 6cee65e1e..5eb91bd26 100644 --- a/composites/ebean/pom.xml +++ b/composites/ebean/pom.xml @@ -29,13 +29,13 @@ io.ebean ebean-joda-time - 13.24.0-RC1 + 13.24.0-RC2 io.ebean ebean-jackson-jsonnode - 13.24.0-RC1 + 13.24.0-RC2 diff --git a/ebean-api/src/main/java/io/ebean/DatabaseBuilder.java b/ebean-api/src/main/java/io/ebean/DatabaseBuilder.java index 1ecced869..cf70dd01e 100644 --- a/ebean-api/src/main/java/io/ebean/DatabaseBuilder.java +++ b/ebean-api/src/main/java/io/ebean/DatabaseBuilder.java @@ -26,31 +26,19 @@ import java.util.*; import java.util.function.Function; public interface DatabaseBuilder { - /** - * Get the clock used for setting the timestamps (e.g. @UpdatedTimestamp) on objects. - */ - Clock getClock(); + + Settings settings(); /** * Set the clock used for setting the timestamps (e.g. @UpdatedTimestamp) on objects. */ void setClock(Clock clock); - /** - * Return the slow query time in millis. - */ - long getSlowQueryMillis(); - /** * Set the slow query time in millis. */ void setSlowQueryMillis(long slowQueryMillis); - /** - * Return the slow query event listener. - */ - SlowQueryListener getSlowQueryListener(); - /** * Set the slow query event listener. */ @@ -78,11 +66,6 @@ public interface DatabaseBuilder { */ void putServiceObject(Class iface, T configObject); - /** - * Return the service object given the key. - */ - Object getServiceObject(String key); - /** * Put a service object into configuration such that it can be used by ebean or a plugin. * @@ -105,28 +88,6 @@ public interface DatabaseBuilder { return Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1); } - /** - * Used by ebean or plugins to obtain service objects. - * - *
{@code
-   *
-   *   JedisPool jedisPool = config.getServiceObject(JedisPool.class);
-   *
-   * }
- * - * @param cls The type of the service object to obtain - * @return The service object given the class type - */ - @SuppressWarnings("unchecked") -

P getServiceObject(Class

cls); - - /** - * Return the Jackson JsonFactory to use. - *

- * If not set a default implementation will be used. - */ - JsonFactory getJsonFactory(); - /** * Set the Jackson JsonFactory to use. *

@@ -134,31 +95,16 @@ public interface DatabaseBuilder { */ void setJsonFactory(JsonFactory jsonFactory); - /** - * Return the JSON format used for DateTime types. - */ - JsonConfig.DateTime getJsonDateTime(); - /** * Set the JSON format to use for DateTime types. */ void setJsonDateTime(JsonConfig.DateTime jsonDateTime); - /** - * Return the JSON format used for Date types. - */ - JsonConfig.Date getJsonDate(); - /** * Set the JSON format to use for Date types. */ void setJsonDate(JsonConfig.Date jsonDate); - /** - * Return the JSON include mode used when writing JSON. - */ - JsonConfig.Include getJsonInclude(); - /** * Set the JSON include mode used when writing JSON. *

@@ -166,13 +112,6 @@ public interface DatabaseBuilder { */ void setJsonInclude(JsonConfig.Include jsonInclude); - /** - * Return the default MutableDetection to use with {@code @DbJson} using Jackson. - * - * @see DbJson#mutationDetection() - */ - MutationDetection getJsonMutationDetection(); - /** * Set the default MutableDetection to use with {@code @DbJson} using Jackson. * @@ -180,23 +119,11 @@ public interface DatabaseBuilder { */ void setJsonMutationDetection(MutationDetection jsonMutationDetection); - /** - * Return the name of the Database. - */ - String getName(); - /** * Set the name of the Database. */ void setName(String name); - /** - * Return the container / clustering configuration. - *

- * The container holds all the Database instances and provides clustering communication - * services to all the Database instances. - */ - ContainerConfig getContainerConfig(); /** * Set the container / clustering configuration. @@ -206,14 +133,6 @@ public interface DatabaseBuilder { */ void setContainerConfig(ContainerConfig containerConfig); - /** - * Return true if this server should be registered with the Ebean singleton - * when it is created. - *

- * By default this is set to true. - */ - boolean isRegister(); - /** * Set to false if you do not want this server to be registered with the Ebean * singleton when it is created. @@ -222,14 +141,6 @@ public interface DatabaseBuilder { */ void setRegister(boolean register); - /** - * Return true if this server should be registered as the "default" server - * with the Ebean singleton. - *

- * This is only used when {@link #setRegister(boolean)} is also true. - */ - boolean isDefaultServer(); - /** * Set false if you do not want this Database to be registered as the "default" database * with the DB singleton. @@ -238,63 +149,32 @@ public interface DatabaseBuilder { */ void setDefaultServer(boolean defaultServer); - /** - * Return the CurrentUserProvider. This is used to populate @WhoCreated, @WhoModified and - * support other audit features (who executed a query etc). - */ - CurrentUserProvider getCurrentUserProvider(); - /** * Set the CurrentUserProvider. This is used to populate @WhoCreated, @WhoModified and * support other audit features (who executed a query etc). */ void setCurrentUserProvider(CurrentUserProvider currentUserProvider); - /** - * Return the tenancy mode used. - */ - TenantMode getTenantMode(); - /** * Set the tenancy mode to use. */ void setTenantMode(TenantMode tenantMode); - /** - * Return the column name used for TenantMode.PARTITION. - */ - String getTenantPartitionColumn(); - /** * Set the column name used for TenantMode.PARTITION. */ void setTenantPartitionColumn(String tenantPartitionColumn); - /** - * Return the current tenant provider. - */ - CurrentTenantProvider getCurrentTenantProvider(); - /** * Set the current tenant provider. */ void setCurrentTenantProvider(CurrentTenantProvider currentTenantProvider); - /** - * Return the tenancy datasource provider. - */ - TenantDataSourceProvider getTenantDataSourceProvider(); - /** * Set the tenancy datasource provider. */ void setTenantDataSourceProvider(TenantDataSourceProvider tenantDataSourceProvider); - /** - * Return the tenancy schema provider. - */ - TenantSchemaProvider getTenantSchemaProvider(); - /** * Set the tenancy schema provider. */ @@ -320,15 +200,6 @@ public interface DatabaseBuilder { */ void setAutoPersistUpdates(boolean autoPersistUpdates); - /** - * Return the PersistBatch mode to use by default at the transaction level. - *

- * When INSERT or ALL is used then save(), delete() etc do not execute immediately but instead go into - * a JDBC batch execute buffer that is flushed. The buffer is flushed if a query is executed, transaction ends - * or the batch size is meet. - */ - PersistBatch getPersistBatch(); - /** * Set the JDBC batch mode to use at the transaction level. *

@@ -338,16 +209,6 @@ public interface DatabaseBuilder { */ void setPersistBatch(PersistBatch persistBatch); - /** - * Return the JDBC batch mode to use per save(), delete(), insert() or update() request. - *

- * This makes sense when a save() or delete() cascades and executes multiple child statements. The best case - * for this is when saving a master/parent bean this cascade inserts many detail/child beans. - *

- * This only takes effect when the persistBatch mode at the transaction level does not take effect. - */ - PersistBatch getPersistBatchOnCascade(); - /** * Set the JDBC batch mode to use per save(), delete(), insert() or update() request. *

@@ -371,11 +232,6 @@ public interface DatabaseBuilder { */ void setPersistBatching(boolean persistBatching); - /** - * Return the batch size used for JDBC batching. This defaults to 20. - */ - int getPersistBatchSize(); - /** * Set the batch size used for JDBC batching. If unset this defaults to 20. *

@@ -385,13 +241,6 @@ public interface DatabaseBuilder { */ void setPersistBatchSize(int persistBatchSize); - /** - * Gets the query batch size. This defaults to 100. - * - * @return the query batch size - */ - int getQueryBatchSize(); - /** * Sets the query batch size. This defaults to 100. * @@ -399,15 +248,8 @@ public interface DatabaseBuilder { */ void setQueryBatchSize(int queryBatchSize); - EnumType getDefaultEnumType(); - void setDefaultEnumType(EnumType defaultEnumType); - /** - * Return true if lazy loading is disabled on queries by default. - */ - boolean isDisableLazyLoading(); - /** * Set to true to disable lazy loading by default. *

@@ -415,11 +257,6 @@ public interface DatabaseBuilder { */ void setDisableLazyLoading(boolean disableLazyLoading); - /** - * Return the default batch size for lazy loading of beans and collections. - */ - int getLazyLoadBatchSize(); - /** * Set the default batch size for lazy loading. *

@@ -442,34 +279,16 @@ public interface DatabaseBuilder { */ void setDatabaseSequenceBatchSize(int databaseSequenceBatchSize); - /** - * Return the default JDBC fetchSize hint for findList queries. - */ - int getJdbcFetchSizeFindList(); - /** * Set the default JDBC fetchSize hint for findList queries. */ void setJdbcFetchSizeFindList(int jdbcFetchSizeFindList); - /** - * Return the default JDBC fetchSize hint for findEach/findEachWhile queries. - */ - int getJdbcFetchSizeFindEach(); - /** * Set the default JDBC fetchSize hint for findEach/findEachWhile queries. */ void setJdbcFetchSizeFindEach(int jdbcFetchSizeFindEach); - /** - * Return the ChangeLogPrepare. - *

- * This is used to set user context information to the ChangeSet in the - * foreground thread prior to the logging occurring in a background thread. - */ - ChangeLogPrepare getChangeLogPrepare(); - /** * Set the ChangeLogPrepare. *

@@ -478,25 +297,12 @@ public interface DatabaseBuilder { */ void setChangeLogPrepare(ChangeLogPrepare changeLogPrepare); - /** - * Return the ChangeLogListener which actually performs the logging of change sets - * in the background. - */ - ChangeLogListener getChangeLogListener(); - /** * Set the ChangeLogListener which actually performs the logging of change sets * in the background. */ void setChangeLogListener(ChangeLogListener changeLogListener); - /** - * Return the ChangeLogRegister which controls which ChangeLogFilter is used for each - * bean type and in this way provide fine grained control over which persist requests - * are included in the change log. - */ - ChangeLogRegister getChangeLogRegister(); - /** * Set the ChangeLogRegister which controls which ChangeLogFilter is used for each * bean type and in this way provide fine grained control over which persist requests @@ -504,31 +310,16 @@ public interface DatabaseBuilder { */ void setChangeLogRegister(ChangeLogRegister changeLogRegister); - /** - * Return true if inserts should be included in the change log by default. - */ - boolean isChangeLogIncludeInserts(); - /** * Set if inserts should be included in the change log by default. */ void setChangeLogIncludeInserts(boolean changeLogIncludeInserts); - /** - * Return true (default) if the changelog should be written async. - */ - boolean isChangeLogAsync(); - /** * Sets if the changelog should be written async (default = true). */ void setChangeLogAsync(boolean changeLogAsync); - /** - * Return the ReadAuditLogger to use. - */ - ReadAuditLogger getReadAuditLogger(); - /** * Set the ReadAuditLogger to use. If not set the default implementation is used * which logs the read events in JSON format to a standard named SLF4J logger @@ -536,11 +327,6 @@ public interface DatabaseBuilder { */ void setReadAuditLogger(ReadAuditLogger readAuditLogger); - /** - * Return the ReadAuditPrepare to use. - */ - ReadAuditPrepare getReadAuditPrepare(); - /** * Set the ReadAuditPrepare to use. *

@@ -550,21 +336,11 @@ public interface DatabaseBuilder { */ void setReadAuditPrepare(ReadAuditPrepare readAuditPrepare); - /** - * Return the configuration for profiling. - */ - ProfilingConfig getProfilingConfig(); - /** * Set the configuration for profiling. */ void setProfilingConfig(ProfilingConfig profilingConfig); - /** - * Return the DB schema to use. - */ - String getDbSchema(); - /** * Set the DB schema to use. This specifies to use this schema for: *

    @@ -575,223 +351,110 @@ public interface DatabaseBuilder { */ void setDbSchema(String dbSchema); - /** - * Return the Geometry SRID. - */ - int getGeometrySRID(); - /** * Set the Geometry SRID. */ void setGeometrySRID(int geometrySRID); - /** - * Return the time zone to use when reading/writing Timestamps via JDBC. - *

    - * When set a Calendar object is used in JDBC calls when reading/writing Timestamp objects. - */ - String getDataTimeZone(); - /** * Set the time zone to use when reading/writing Timestamps via JDBC. */ void setDataTimeZone(String dataTimeZone); - /** - * Return the suffix appended to the base table to derive the view that contains the union - * of the base table and the history table in order to support asOf queries. - */ - String getAsOfViewSuffix(); - /** * Set the suffix appended to the base table to derive the view that contains the union * of the base table and the history table in order to support asOf queries. */ void setAsOfViewSuffix(String asOfViewSuffix); - /** - * Return the database column used to support history and 'As of' queries. This column is a timestamp range - * or equivalent. - */ - String getAsOfSysPeriod(); - /** * Set the database column used to support history and 'As of' queries. This column is a timestamp range * or equivalent. */ void setAsOfSysPeriod(String asOfSysPeriod); - /** - * Return the history table suffix (defaults to _history). - */ - String getHistoryTableSuffix(); - /** * Set the history table suffix. */ void setHistoryTableSuffix(String historyTableSuffix); - /** - * Return true if we are running in a JTA Transaction manager. - */ - boolean isUseJtaTransactionManager(); - /** * Set to true if we are running in a JTA Transaction manager. */ void setUseJtaTransactionManager(boolean useJtaTransactionManager); - /** - * Return the external transaction manager. - */ - ExternalTransactionManager getExternalTransactionManager(); - /** * Set the external transaction manager. */ void setExternalTransactionManager(ExternalTransactionManager externalTransactionManager); - /** - * Return the ServerCachePlugin. - */ - ServerCachePlugin getServerCachePlugin(); - /** * Set the ServerCachePlugin to use. */ void setServerCachePlugin(ServerCachePlugin serverCachePlugin); - /** - * Return true if LOB's should default to fetch eager. - * By default this is set to false and LOB's must be explicitly fetched. - */ - boolean isEagerFetchLobs(); - /** * Set to true if you want LOB's to be fetch eager by default. * By default this is set to false and LOB's must be explicitly fetched. */ void setEagerFetchLobs(boolean eagerFetchLobs); - /** - * Return the max call stack to use for origin location. - */ - int getMaxCallStack(); - /** * Set the max call stack to use for origin location. */ void setMaxCallStack(int maxCallStack); - /** - * Return true if transactions should rollback on checked exceptions. - */ - boolean isTransactionRollbackOnChecked(); - /** * Set to true if transactions should by default rollback on checked exceptions. */ void setTransactionRollbackOnChecked(boolean transactionRollbackOnChecked); - /** - * Return the Background executor schedule pool size. Defaults to 1. - */ - int getBackgroundExecutorSchedulePoolSize(); - /** * Set the Background executor schedule pool size. */ void setBackgroundExecutorSchedulePoolSize(int backgroundExecutorSchedulePoolSize); - /** - * Return the Background executor shutdown seconds. This is the time allowed for the pool to shutdown nicely - * before it is forced shutdown. - */ - int getBackgroundExecutorShutdownSecs(); - /** * Set the Background executor shutdown seconds. This is the time allowed for the pool to shutdown nicely * before it is forced shutdown. */ void setBackgroundExecutorShutdownSecs(int backgroundExecutorShutdownSecs); - /** - * Return the background executor wrapper. - */ - BackgroundExecutorWrapper getBackgroundExecutorWrapper(); - /** * Sets the background executor wrapper. The wrapper is used when a task is sent to background and should copy the thread-locals. */ void setBackgroundExecutorWrapper(BackgroundExecutorWrapper backgroundExecutorWrapper); - /** - * Return the L2 cache default max size. - */ - int getCacheMaxSize(); - /** * Set the L2 cache default max size. */ void setCacheMaxSize(int cacheMaxSize); - /** - * Return the L2 cache default max idle time in seconds. - */ - int getCacheMaxIdleTime(); - /** * Set the L2 cache default max idle time in seconds. */ void setCacheMaxIdleTime(int cacheMaxIdleTime); - /** - * Return the L2 cache default max time to live in seconds. - */ - int getCacheMaxTimeToLive(); - /** * Set the L2 cache default max time to live in seconds. */ void setCacheMaxTimeToLive(int cacheMaxTimeToLive); - /** - * Return the L2 query cache default max size. - */ - int getQueryCacheMaxSize(); - /** * Set the L2 query cache default max size. */ void setQueryCacheMaxSize(int queryCacheMaxSize); - /** - * Return the L2 query cache default max idle time in seconds. - */ - int getQueryCacheMaxIdleTime(); - /** * Set the L2 query cache default max idle time in seconds. */ void setQueryCacheMaxIdleTime(int queryCacheMaxIdleTime); - /** - * Return the L2 query cache default max time to live in seconds. - */ - int getQueryCacheMaxTimeToLive(); - /** * Set the L2 query cache default max time to live in seconds. */ void setQueryCacheMaxTimeToLive(int queryCacheMaxTimeToLive); - /** - * Return the NamingConvention. - *

    - * If none has been set the default UnderscoreNamingConvention is used. - */ - NamingConvention getNamingConvention(); - /** * Set the NamingConvention. *

    @@ -799,11 +462,6 @@ public interface DatabaseBuilder { */ void setNamingConvention(NamingConvention namingConvention); - /** - * Return true if all DB column and table names should use quoted identifiers. - */ - boolean isAllQuotedIdentifiers(); - /** * Set to true if all DB column and table names should use quoted identifiers. *

    @@ -812,71 +470,36 @@ public interface DatabaseBuilder { */ void setAllQuotedIdentifiers(boolean allQuotedIdentifiers); - /** - * Return true if this Database is a Document store only instance (has no JDBC DB). - */ - boolean isDocStoreOnly(); - /** * Set to true if this Database is Document store only instance (has no JDBC DB). */ void setDocStoreOnly(boolean docStoreOnly); - /** - * Return the configuration for the ElasticSearch integration. - */ - DocStoreConfig getDocStoreConfig(); - /** * Set the configuration for the ElasticSearch integration. */ void setDocStoreConfig(DocStoreConfig docStoreConfig); - /** - * Return the constraint naming convention used in DDL generation. - */ - DbConstraintNaming getConstraintNaming(); - /** * Set the constraint naming convention used in DDL generation. */ void setConstraintNaming(DbConstraintNaming constraintNaming); - /** - * Return the configuration for AutoTune. - */ - AutoTuneConfig getAutoTuneConfig(); - /** * Set the configuration for AutoTune. */ void setAutoTuneConfig(AutoTuneConfig autoTuneConfig); - /** - * Return true if the startup DataSource check should be skipped. - */ - boolean skipDataSourceCheck(); - /** * Set to true to skip the startup DataSource check. */ void setSkipDataSourceCheck(boolean skipDataSourceCheck); - /** - * Return the DataSource. - */ - DataSource getDataSource(); - /** * Set a DataSource. */ void setDataSource(DataSource dataSource); - /** - * Return the read only DataSource. - */ - DataSource getReadOnlyDataSource(); - /** * Set the read only DataSource. *

    @@ -888,53 +511,22 @@ public interface DatabaseBuilder { */ void setReadOnlyDataSource(DataSource readOnlyDataSource); - /** - * Return the configuration to build a DataSource using Ebean's own DataSource - * implementation. - */ - DataSourceBuilder getDataSourceConfig(); - /** * Set the configuration required to build a DataSource using Ebean's own * DataSource implementation. */ void setDataSourceConfig(DataSourceBuilder dataSourceConfig); - /** - * Return true if Ebean should create a DataSource for use with implicit read only transactions. - */ - boolean isAutoReadOnlyDataSource(); - /** * Set to true if Ebean should create a DataSource for use with implicit read only transactions. */ void setAutoReadOnlyDataSource(boolean autoReadOnlyDataSource); - /** - * Return the configuration for the read only DataSource. - *

    - * This is only used if autoReadOnlyDataSource is true. - *

    - * The driver, url, username and password default to the configuration for the main DataSource if they are not - * set on this configuration. This means there is actually no need to set any configuration here and we only - * set configuration for url, username and password etc if it is different from the main DataSource. - */ - DataSourceBuilder getReadOnlyDataSourceConfig(); - /** * Set the configuration for the read only DataSource. */ void setReadOnlyDataSourceConfig(DataSourceBuilder readOnlyDataSourceConfig); - /** - * Return a value used to represent TRUE in the database. - *

    - * This is used for databases that do not support boolean natively. - *

    - * The value returned is either a Integer or a String (e.g. "1", or "T"). - */ - String getDatabaseBooleanTrue(); - /** * Set the value to represent TRUE in the database. *

    @@ -944,15 +536,6 @@ public interface DatabaseBuilder { */ void setDatabaseBooleanTrue(String databaseTrue); - /** - * Return a value used to represent FALSE in the database. - *

    - * This is used for databases that do not support boolean natively. - *

    - * The value returned is either a Integer or a String (e.g. "0", or "F"). - */ - String getDatabaseBooleanFalse(); - /** * Set the value to represent FALSE in the database. *

    @@ -962,11 +545,6 @@ public interface DatabaseBuilder { */ void setDatabaseBooleanFalse(String databaseFalse); - /** - * Return the number of DB sequence values that should be preallocated. - */ - int getDatabaseSequenceBatchSize(); - /** * Set the number of DB sequence values that should be preallocated and cached * by Ebean. @@ -982,14 +560,6 @@ public interface DatabaseBuilder { */ void setDatabaseSequenceBatch(int databaseSequenceBatchSize); - /** - * Return the database platform name (can be null). - *

    - * If null then the platform is determined automatically via the JDBC driver - * information. - */ - String getDatabasePlatformName(); - /** * Explicitly set the database platform name *

    @@ -1005,11 +575,6 @@ public interface DatabaseBuilder { */ void setDatabasePlatformName(String databasePlatformName); - /** - * Return the database platform to use for this database. - */ - DatabasePlatform getDatabasePlatform(); - /** * Explicitly set the database platform to use. *

    @@ -1018,21 +583,11 @@ public interface DatabaseBuilder { */ void setDatabasePlatform(DatabasePlatform databasePlatform); - /** - * Return the preferred DB platform IdType. - */ - IdType getIdType(); - /** * Set the preferred DB platform IdType. */ void setIdType(IdType idType); - /** - * Return the EncryptKeyManager. - */ - EncryptKeyManager getEncryptKeyManager(); - /** * Set the EncryptKeyManager. *

    @@ -1047,14 +602,6 @@ public interface DatabaseBuilder { */ void setEncryptKeyManager(EncryptKeyManager encryptKeyManager); - /** - * Return the EncryptDeployManager. - *

    - * This is optionally used to programmatically define which columns are - * encrypted instead of using the {@link Encrypted} Annotation. - */ - EncryptDeployManager getEncryptDeployManager(); - /** * Set the EncryptDeployManager. *

    @@ -1063,12 +610,6 @@ public interface DatabaseBuilder { */ void setEncryptDeployManager(EncryptDeployManager encryptDeployManager); - /** - * Return the Encryptor used to encrypt data on the java client side (as - * opposed to DB encryption functions). - */ - Encryptor getEncryptor(); - /** * Set the Encryptor used to encrypt data on the java client side (as opposed * to DB encryption functions). @@ -1078,11 +619,6 @@ public interface DatabaseBuilder { */ void setEncryptor(Encryptor encryptor); - /** - * Return true if the Database instance should be created in offline mode. - */ - boolean isDbOffline(); - /** * Set to true if the Database instance should be created in offline mode. *

    @@ -1091,14 +627,6 @@ public interface DatabaseBuilder { */ void setDbOffline(boolean dbOffline); - /** - * Return the DbEncrypt used to encrypt and decrypt properties. - *

    - * Note that if this is not set then the DbPlatform may already have a - * DbEncrypt set and that will be used. - */ - DbEncrypt getDbEncrypt(); - /** * Set the DbEncrypt used to encrypt and decrypt properties. *

    @@ -1107,56 +635,32 @@ public interface DatabaseBuilder { */ void setDbEncrypt(DbEncrypt dbEncrypt); - /** - * Return the configuration for DB types (such as UUID and custom mappings). - */ - PlatformConfig getPlatformConfig(); - /** * Set the configuration for DB platform (such as UUID and custom mappings). */ void setPlatformConfig(PlatformConfig platformConfig); + /** * Set the DB type used to store UUID. */ void setDbUuid(PlatformConfig.DbUuid dbUuid); - /** - * Returns the UUID version mode. - */ - DatabaseConfig.UuidVersion getUuidVersion(); - /** * Sets the UUID version mode. */ void setUuidVersion(DatabaseConfig.UuidVersion uuidVersion); - /** - * Return the UUID state file. - */ - String getUuidStateFile(); - /** * Set the UUID state file. */ void setUuidStateFile(String uuidStateFile); - /** - * Returns the V1-UUID-NodeId - */ - String getUuidNodeId(); - /** * Sets the V1-UUID-NodeId. */ void setUuidNodeId(String uuidNodeId); - /** - * Return true if LocalTime should be persisted with nanos precision. - */ - boolean isLocalTimeWithNanos(); - /** * Set to true if LocalTime should be persisted with nanos precision. *

    @@ -1164,13 +668,6 @@ public interface DatabaseBuilder { */ void setLocalTimeWithNanos(boolean localTimeWithNanos); - /** - * Return true if Duration should be persisted with nanos precision (SQL DECIMAL). - *

    - * Otherwise it is persisted with second precision (SQL INTEGER). - */ - boolean isDurationWithNanos(); - /** * Set to true if Duration should be persisted with nanos precision (SQL DECIMAL). *

    @@ -1186,11 +683,6 @@ public interface DatabaseBuilder { */ void setRunMigration(boolean runMigration); - /** - * Return true if the DB migration should run on server start. - */ - boolean isRunMigration(); - /** * Set to true to generate the "create all" DDL on startup. *

    @@ -1214,14 +706,6 @@ public interface DatabaseBuilder { */ void setDdlExtra(boolean ddlExtra); - /** - * Return true if the "drop all ddl" should be skipped. - *

    - * Typically we want to do this when using H2 (in memory) as our test database and the drop statements - * are not required so skipping the drop table statements etc makes it faster with less noise in the logs. - */ - boolean isDdlCreateOnly(); - /** * Set to true if the "drop all ddl" should be skipped. *

    @@ -1230,14 +714,6 @@ public interface DatabaseBuilder { */ void setDdlCreateOnly(boolean ddlCreateOnly); - /** - * Return SQL script to execute after the "create all" DDL has been run. - *

    - * Typically this is a sql script that inserts test seed data when running tests. - * Place a sql script in src/test/resources that inserts test seed data. - */ - String getDdlSeedSql(); - /** * Set a SQL script to execute after the "create all" DDL has been run. *

    @@ -1246,41 +722,16 @@ public interface DatabaseBuilder { */ void setDdlSeedSql(String ddlSeedSql); - /** - * Return a SQL script to execute before the "create all" DDL has been run. - */ - String getDdlInitSql(); - /** * Set a SQL script to execute before the "create all" DDL has been run. */ void setDdlInitSql(String ddlInitSql); - /** - * Return true if the DDL should be generated. - */ - boolean isDdlGenerate(); - - /** - * Return true if the DDL should be run. - */ - boolean isDdlRun(); - - /** - * Return true, if extra-ddl.xml should be executed. - */ - boolean isDdlExtra(); - /** * Set the header to use with DDL generation. */ void setDdlHeader(String ddlHeader); - /** - * Return the header to use with DDL generation. - */ - String getDdlHeader(); - /** * Return true if strict mode is used which includes a check that non-null columns have a default value. */ @@ -1291,31 +742,16 @@ public interface DatabaseBuilder { */ void setDdlStrictMode(boolean ddlStrictMode); - /** - * Return a comma and equals delimited placeholders that are substituted in DDL scripts. - */ - String getDdlPlaceholders(); - /** * Set a comma and equals delimited placeholders that are substituted in DDL scripts. */ void setDdlPlaceholders(String ddlPlaceholders); - /** - * Return a map of placeholder values that are substituted in DDL scripts. - */ - Map getDdlPlaceholderMap(); - /** * Set a map of placeholder values that are substituted in DDL scripts. */ void setDdlPlaceholderMap(Map ddlPlaceholderMap); - /** - * Return true if the class path search should be disabled. - */ - boolean isDisableClasspathSearch(); - /** * Set to true to disable the class path search even for the case where no entity bean classes * have been registered. This can be used to start an Database instance just to use the @@ -1323,11 +759,6 @@ public interface DatabaseBuilder { */ void setDisableClasspathSearch(boolean disableClasspathSearch); - /** - * Return the mode to use for Joda LocalTime support 'normal' or 'utc'. - */ - String getJodaLocalTimeMode(); - /** * Set the mode to use for Joda LocalTime support 'normal' or 'utc'. */ @@ -1358,13 +789,6 @@ public interface DatabaseBuilder { */ void addPackage(String packageName); - /** - * Return packages to search for entities via class path search. - *

    - * This is only used if classes have not been explicitly specified. - */ - List getPackages(); - /** * Set packages to search for entities via class path search. *

    @@ -1383,77 +807,11 @@ public interface DatabaseBuilder { */ void setClasses(Collection> classes); - /** - * Return the classes registered for this database. Typically, this includes - * entities and perhaps listeners. - */ - Set> classes(); - - /** - * @deprecated - migrate to {@link #classes()}. - *

    - * Sorry if returning Set rather than List breaks code but it feels safer to - * do that than a subtle change to return a shallow copy which you will not detect. - */ - @Deprecated(forRemoval = true) - Set> getClasses(); - - /** - * Return true if L2 bean cache should be skipped once writes have occurred on a transaction. - *

    - * This defaults to true and means that for "find by id" and "find by natural key" - * queries that normally hit L2 bean cache automatically will not do so after a write/persist - * on the transaction. - *

    - *

    {@code
    -   *
    -   *   // assume Customer has L2 bean caching enabled ...
    -   *
    -   *   try (Transaction transaction = DB.beginTransaction()) {
    -   *
    -   *     // this uses L2 bean cache as the transaction
    -   *     // ... is considered "query only" at this point
    -   *     Customer.find.byId(42);
    -   *
    -   *     // transaction no longer "query only" once
    -   *     // ... a bean has been saved etc
    -   *     DB.save(someBean);
    -   *
    -   *     // will NOT use L2 bean cache as the transaction
    -   *     // ... is no longer considered "query only"
    -   *     Customer.find.byId(55);
    -   *
    -   *
    -   *
    -   *     // explicit control - please use L2 bean cache
    -   *
    -   *     transaction.setSkipCache(false);
    -   *     Customer.find.byId(77); // hit the l2 bean cache
    -   *
    -   *
    -   *     // explicit control - please don't use L2 bean cache
    -   *
    -   *     transaction.setSkipCache(true);
    -   *     Customer.find.byId(99); // skips l2 bean cache
    -   *
    -   *   }
    -   *
    -   * }
    - * - * @see Transaction#setSkipCache(boolean) - */ - boolean isSkipCacheAfterWrite(); - /** * Set to false when we still want to hit the cache after a write has occurred on a transaction. */ void setSkipCacheAfterWrite(boolean skipCacheAfterWrite); - /** - * Returns true if updates in JDBC batch default to include all properties by default. - */ - boolean isUpdateAllPropertiesInBatch(); - /** * Set to false if by default updates in JDBC batch should not include all properties. *

    @@ -1463,16 +821,12 @@ public interface DatabaseBuilder { */ void setUpdateAllPropertiesInBatch(boolean updateAllPropertiesInBatch); - /** - * Returns the resource directory. - */ - String getResourceDirectory(); - /** * Sets the resource directory. */ void setResourceDirectory(String resourceDirectory); + /** * Add a custom type mapping. *

    @@ -1518,11 +872,6 @@ public interface DatabaseBuilder { */ void add(BeanQueryAdapter beanQueryAdapter); - /** - * Return the BeanQueryAdapter instances. - */ - List getQueryAdapters(); - /** * Register all the BeanQueryAdapter instances. *

    @@ -1531,11 +880,6 @@ public interface DatabaseBuilder { */ void setQueryAdapters(List queryAdapters); - /** - * Return the custom IdGenerator instances. - */ - List getIdGenerators(); - /** * Set the custom IdGenerator instances. */ @@ -1570,41 +914,21 @@ public interface DatabaseBuilder { */ void add(BeanPostConstructListener listener); - /** - * Return the list of BeanFindController instances. - */ - List getFindControllers(); - /** * Set the list of BeanFindController instances. */ void setFindControllers(List findControllers); - /** - * Return the list of BeanPostLoader instances. - */ - List getPostLoaders(); - /** * Set the list of BeanPostLoader instances. */ void setPostLoaders(List postLoaders); - /** - * Return the list of BeanPostLoader instances. - */ - List getPostConstructListeners(); - /** * Set the list of BeanPostLoader instances. */ void setPostConstructListeners(List listeners); - /** - * Return the BeanPersistController instances. - */ - List getPersistControllers(); - /** * Register all the BeanPersistController instances. *

    @@ -1621,31 +945,16 @@ public interface DatabaseBuilder { */ void add(BeanPersistListener beanPersistListener); - /** - * Return the BeanPersistListener instances. - */ - List getPersistListeners(); - /** * Add a BulkTableEventListener */ void add(BulkTableEventListener bulkTableEventListener); - /** - * Return the list of BulkTableEventListener instances. - */ - List getBulkTableEventListeners(); - /** * Add a ServerConfigStartup. */ void addServerConfigStartup(ServerConfigStartup configStartupListener); - /** - * Return the list of ServerConfigStartup instances. - */ - List getServerConfigStartupListeners(); - /** * Register all the BeanPersistListener instances. *

    @@ -1654,17 +963,6 @@ public interface DatabaseBuilder { */ void setPersistListeners(List persistListeners); - /** - * Return the default PersistenceContextScope to be used if one is not explicitly set on a query. - *

    - * The PersistenceContextScope can specified on each query via {@link io.ebean - * .Query#setPersistenceContextScope(io.ebean.PersistenceContextScope)}. If it - * is not set on the query this default scope is used. - * - * @see Query#setPersistenceContextScope(PersistenceContextScope) - */ - PersistenceContextScope getPersistenceContextScope(); - /** * Set the PersistenceContext scope to be used if one is not explicitly set on a query. *

    @@ -1678,12 +976,6 @@ public interface DatabaseBuilder { */ void setPersistenceContextScope(PersistenceContextScope persistenceContextScope); - /** - * Return the ClassLoadConfig which is used to detect Joda, Java8 types etc and also - * create new instances of plugins given a className. - */ - ClassLoadConfig getClassLoadConfig(); - /** * Set the ClassLoadConfig which is used to detect Joda, Java8 types etc and also * create new instances of plugins given a className. @@ -1703,24 +995,12 @@ public interface DatabaseBuilder { */ void loadFromProperties(Properties properties); - /** - * Return the properties that we used for configuration and were set via a call to loadFromProperties(). - */ - Properties getProperties(); - /** * Return the PersistBatch mode to use for 'batchOnCascade' taking into account if the database * platform supports getGeneratedKeys in batch mode. */ PersistBatch appliedPersistBatchOnCascade(); - /** - * Return the Jackson ObjectMapper. - *

    - * Note that this is not strongly typed as Jackson ObjectMapper is an optional dependency. - */ - Object getObjectMapper(); - /** * Set the Jackson ObjectMapper. *

    @@ -1728,11 +1008,6 @@ public interface DatabaseBuilder { */ void setObjectMapper(Object objectMapper); - /** - * Return true if eq("someProperty", null) should to generate "1=1" rather than "is null" sql expression. - */ - boolean isExpressionEqualsWithNullAsNoop(); - /** * Set to true if you want eq("someProperty", null) to generate "1=1" rather than "is null" sql expression. *

    @@ -1742,51 +1017,26 @@ public interface DatabaseBuilder { */ void setExpressionEqualsWithNullAsNoop(boolean expressionEqualsWithNullAsNoop); - /** - * Return true if native ILIKE expression should be used if supported by the database platform (e.g. Postgres). - */ - boolean isExpressionNativeIlike(); - /** * Set to true to use native ILIKE expression if supported by the database platform (e.g. Postgres). */ void setExpressionNativeIlike(boolean expressionNativeIlike); - /** - * Return the enabled L2 cache regions. - */ - String getEnabledL2Regions(); - /** * Set the enabled L2 cache regions (comma delimited). */ void setEnabledL2Regions(String enabledL2Regions); - /** - * Return true if L2 cache is disabled. - */ - boolean isDisableL2Cache(); - /** * Set to true to disable L2 caching. Typically useful in performance testing. */ void setDisableL2Cache(boolean disableL2Cache); - /** - * Return true to use local only L2 cache. Effectively ignore l2 cache plugin like ebean-redis etc. - */ - boolean isLocalOnlyL2Cache(); - /** * Force the use of local only L2 cache. Effectively ignore l2 cache plugin like ebean-redis etc. */ void setLocalOnlyL2Cache(boolean localOnlyL2Cache); - /** - * Returns if we use javax.validation.constraints.NotNull - */ - boolean isUseValidationNotNull(); - /** * Controls if Ebean should ignore &x64;javax.validation.contstraints.NotNull or * &x64;jakarta.validation.contstraints.NotNull @@ -1798,11 +1048,6 @@ public interface DatabaseBuilder { */ void setUseValidationNotNull(boolean useValidationNotNull); - /** - * Return true if L2 cache notification should run in the foreground. - */ - boolean isNotifyL2CacheInForeground(); - /** * Set this to true to run L2 cache notification in the foreground. *

    @@ -1812,11 +1057,6 @@ public interface DatabaseBuilder { */ void setNotifyL2CacheInForeground(boolean notifyL2CacheInForeground); - /** - * Return the time to live for ebean's internal query plan. - */ - int getQueryPlanTTLSeconds(); - /** * Set the time to live for ebean's internal query plan. *

    @@ -1843,11 +1083,6 @@ public interface DatabaseBuilder { */ void addMappingLocation(String mappingLocation); - /** - * Return mapping locations to search for xml mapping via class path search. - */ - List getMappingLocations(); - /** * Set mapping locations to search for xml mapping via class path search. *

    @@ -1855,34 +1090,17 @@ public interface DatabaseBuilder { */ void setMappingLocations(List mappingLocations); - /** - * When false we need explicit @GeneratedValue mapping to assign - * Identity or Sequence generated values. When true Id properties are automatically - * assigned Identity or Sequence without the GeneratedValue mapping. - */ - boolean isIdGeneratorAutomatic(); - /** * Set to false such that Id properties require explicit @GeneratedValue * mapping before they are assigned Identity or Sequence generation based on platform. */ void setIdGeneratorAutomatic(boolean idGeneratorAutomatic); - /** - * Return true if query plan capture is enabled. - */ - boolean isQueryPlanEnable(); - /** * Set to true to enable query plan capture. */ void setQueryPlanEnable(boolean queryPlanEnable); - /** - * Return the query plan collection threshold in microseconds. - */ - long getQueryPlanThresholdMicros(); - /** * Set the query plan collection threshold in microseconds. *

    @@ -1891,35 +1109,16 @@ public interface DatabaseBuilder { */ void setQueryPlanThresholdMicros(long queryPlanThresholdMicros); - /** - * Return true if periodic capture of query plans is enabled. - */ - boolean isQueryPlanCapture(); - /** * Set to true to turn on periodic capture of query plans. */ void setQueryPlanCapture(boolean queryPlanCapture); - /** - * Return the frequency to capture query plans. - */ - long getQueryPlanCapturePeriodSecs(); - /** * Set the frequency in seconds to capture query plans. */ void setQueryPlanCapturePeriodSecs(long queryPlanCapturePeriodSecs); - /** - * Return the time after which a capture query plans request will - * stop capturing more query plans. - *

    - * Effectively this controls the amount of load/time we want to - * allow for query plan capture. - */ - long getQueryPlanCaptureMaxTimeMillis(); - /** * Set the time after which a capture query plans request will * stop capturing more query plans. @@ -1929,41 +1128,21 @@ public interface DatabaseBuilder { */ void setQueryPlanCaptureMaxTimeMillis(long queryPlanCaptureMaxTimeMillis); - /** - * Return the max number of query plans captured per request. - */ - int getQueryPlanCaptureMaxCount(); - /** * Set the max number of query plans captured per request. */ void setQueryPlanCaptureMaxCount(int queryPlanCaptureMaxCount); - /** - * Return the listener used to process captured query plans. - */ - QueryPlanListener getQueryPlanListener(); - /** * Set the listener used to process captured query plans. */ void setQueryPlanListener(QueryPlanListener queryPlanListener); - /** - * Return true if metrics should be dumped when the server is shutdown. - */ - boolean isDumpMetricsOnShutdown(); - /** * Set to true if metrics should be dumped when the server is shutdown. */ void setDumpMetricsOnShutdown(boolean dumpMetricsOnShutdown); - /** - * Return the options for dumping metrics. - */ - String getDumpMetricsOptions(); - /** * Include 'sql' or 'hash' in options such that they are included in the output. * @@ -1972,15 +1151,7 @@ public interface DatabaseBuilder { void setDumpMetricsOptions(String dumpMetricsOptions); /** - * Return true if entity classes should be loaded and registered via EntityClassRegister. - *

    - * When false we either register entity classes via application code or use classpath - * scanning to find and register entity classes. - */ - boolean isLoadModuleInfo(); - - /** - * @deprecated - migrate to {@link #isLoadModuleInfo()}. + * @deprecated - migrate to {@link Settings#isLoadModuleInfo()}. */ @Deprecated(forRemoval = true) boolean isAutoLoadModuleInfo(); @@ -1994,13 +1165,859 @@ public interface DatabaseBuilder { */ void setLoadModuleInfo(boolean loadModuleInfo); - /** - * Return the naming convention to apply to metrics names. - */ - Function getMetricNaming(); - /** * Set the naming convention to apply to metrics names. */ void setMetricNaming(Function metricNaming); + + + /** + * Provides read access (getters) for the DatabaseBuilder configuration + * that has been set. + */ + interface Settings extends DatabaseBuilder { + + /** + * Return the Jackson JsonFactory to use. + *

    + * If not set a default implementation will be used. + */ + JsonFactory getJsonFactory(); + + /** + * Get the clock used for setting the timestamps (e.g. @UpdatedTimestamp) on objects. + */ + Clock getClock(); + + /** + * Return the slow query time in millis. + */ + long getSlowQueryMillis(); + + /** + * Return the slow query event listener. + */ + SlowQueryListener getSlowQueryListener(); + + /** + * Return the service object given the key. + */ + Object getServiceObject(String key); + + /** + * Used by ebean or plugins to obtain service objects. + * + *

    {@code
    +     *
    +     *   JedisPool jedisPool = config.getServiceObject(JedisPool.class);
    +     *
    +     * }
    + * + * @param cls The type of the service object to obtain + * @return The service object given the class type + */ + @SuppressWarnings("unchecked") +

    P getServiceObject(Class

    cls); + + /** + * Return the JSON format used for DateTime types. + */ + JsonConfig.DateTime getJsonDateTime(); + + /** + * Return the JSON format used for Date types. + */ + JsonConfig.Date getJsonDate(); + + /** + * Return the JSON include mode used when writing JSON. + */ + JsonConfig.Include getJsonInclude(); + + /** + * Return the default MutableDetection to use with {@code @DbJson} using Jackson. + * + * @see DbJson#mutationDetection() + */ + MutationDetection getJsonMutationDetection(); + + /** + * Return the name of the Database. + */ + String getName(); + + /** + * Return the container / clustering configuration. + *

    + * The container holds all the Database instances and provides clustering communication + * services to all the Database instances. + */ + ContainerConfig getContainerConfig(); + + /** + * Return true if this server should be registered with the Ebean singleton + * when it is created. + *

    + * By default this is set to true. + */ + boolean isRegister(); + + /** + * Return true if this server should be registered as the "default" server + * with the Ebean singleton. + *

    + * This is only used when {@link #setRegister(boolean)} is also true. + */ + boolean isDefaultServer(); + + /** + * Return the CurrentUserProvider. This is used to populate @WhoCreated, @WhoModified and + * support other audit features (who executed a query etc). + */ + CurrentUserProvider getCurrentUserProvider(); + + /** + * Return the tenancy mode used. + */ + TenantMode getTenantMode(); + + /** + * Return the column name used for TenantMode.PARTITION. + */ + String getTenantPartitionColumn(); + + /** + * Return the current tenant provider. + */ + CurrentTenantProvider getCurrentTenantProvider(); + + /** + * Return the tenancy datasource provider. + */ + TenantDataSourceProvider getTenantDataSourceProvider(); + + /** + * Return the tenancy schema provider. + */ + TenantSchemaProvider getTenantSchemaProvider(); + + /** + * Return the PersistBatch mode to use by default at the transaction level. + *

    + * When INSERT or ALL is used then save(), delete() etc do not execute immediately but instead go into + * a JDBC batch execute buffer that is flushed. The buffer is flushed if a query is executed, transaction ends + * or the batch size is meet. + */ + PersistBatch getPersistBatch(); + + /** + * Return the JDBC batch mode to use per save(), delete(), insert() or update() request. + *

    + * This makes sense when a save() or delete() cascades and executes multiple child statements. The best case + * for this is when saving a master/parent bean this cascade inserts many detail/child beans. + *

    + * This only takes effect when the persistBatch mode at the transaction level does not take effect. + */ + PersistBatch getPersistBatchOnCascade(); + + /** + * Return the batch size used for JDBC batching. This defaults to 20. + */ + int getPersistBatchSize(); + + /** + * Gets the query batch size. This defaults to 100. + * + * @return the query batch size + */ + int getQueryBatchSize(); + + EnumType getDefaultEnumType(); + + /** + * Return true if lazy loading is disabled on queries by default. + */ + boolean isDisableLazyLoading(); + + /** + * Return the default batch size for lazy loading of beans and collections. + */ + int getLazyLoadBatchSize(); + + + /** + * Return the default JDBC fetchSize hint for findList queries. + */ + int getJdbcFetchSizeFindList(); + + /** + * Return the default JDBC fetchSize hint for findEach/findEachWhile queries. + */ + int getJdbcFetchSizeFindEach(); + + /** + * Return the ChangeLogPrepare. + *

    + * This is used to set user context information to the ChangeSet in the + * foreground thread prior to the logging occurring in a background thread. + */ + ChangeLogPrepare getChangeLogPrepare(); + + /** + * Return the ChangeLogListener which actually performs the logging of change sets + * in the background. + */ + ChangeLogListener getChangeLogListener(); + + /** + * Return the ChangeLogRegister which controls which ChangeLogFilter is used for each + * bean type and in this way provide fine grained control over which persist requests + * are included in the change log. + */ + ChangeLogRegister getChangeLogRegister(); + + /** + * Return true if inserts should be included in the change log by default. + */ + boolean isChangeLogIncludeInserts(); + + /** + * Return true (default) if the changelog should be written async. + */ + boolean isChangeLogAsync(); + + /** + * Return the ReadAuditLogger to use. + */ + ReadAuditLogger getReadAuditLogger(); + + /** + * Return the ReadAuditPrepare to use. + */ + ReadAuditPrepare getReadAuditPrepare(); + + /** + * Return the configuration for profiling. + */ + ProfilingConfig getProfilingConfig(); + + /** + * Return the DB schema to use. + */ + String getDbSchema(); + + /** + * Return the Geometry SRID. + */ + int getGeometrySRID(); + + /** + * Return the time zone to use when reading/writing Timestamps via JDBC. + *

    + * When set a Calendar object is used in JDBC calls when reading/writing Timestamp objects. + */ + String getDataTimeZone(); + + /** + * Return the suffix appended to the base table to derive the view that contains the union + * of the base table and the history table in order to support asOf queries. + */ + String getAsOfViewSuffix(); + + /** + * Return the database column used to support history and 'As of' queries. This column is a timestamp range + * or equivalent. + */ + String getAsOfSysPeriod(); + + /** + * Return the history table suffix (defaults to _history). + */ + String getHistoryTableSuffix(); + + /** + * Return true if we are running in a JTA Transaction manager. + */ + boolean isUseJtaTransactionManager(); + + /** + * Return the external transaction manager. + */ + ExternalTransactionManager getExternalTransactionManager(); + + /** + * Return the ServerCachePlugin. + */ + ServerCachePlugin getServerCachePlugin(); + + /** + * Return true if LOB's should default to fetch eager. + * By default this is set to false and LOB's must be explicitly fetched. + */ + boolean isEagerFetchLobs(); + + /** + * Return the max call stack to use for origin location. + */ + int getMaxCallStack(); + + /** + * Return true if transactions should rollback on checked exceptions. + */ + boolean isTransactionRollbackOnChecked(); + + /** + * Return the Background executor schedule pool size. Defaults to 1. + */ + int getBackgroundExecutorSchedulePoolSize(); + + /** + * Return the Background executor shutdown seconds. This is the time allowed for the pool to shutdown nicely + * before it is forced shutdown. + */ + int getBackgroundExecutorShutdownSecs(); + + /** + * Return the background executor wrapper. + */ + BackgroundExecutorWrapper getBackgroundExecutorWrapper(); + + /** + * Return the L2 cache default max size. + */ + int getCacheMaxSize(); + + /** + * Return the L2 cache default max idle time in seconds. + */ + int getCacheMaxIdleTime(); + + /** + * Return the L2 cache default max time to live in seconds. + */ + int getCacheMaxTimeToLive(); + + /** + * Return the L2 query cache default max size. + */ + int getQueryCacheMaxSize(); + + /** + * Return the L2 query cache default max idle time in seconds. + */ + int getQueryCacheMaxIdleTime(); + + /** + * Return the L2 query cache default max time to live in seconds. + */ + int getQueryCacheMaxTimeToLive(); + + /** + * Return the NamingConvention. + *

    + * If none has been set the default UnderscoreNamingConvention is used. + */ + NamingConvention getNamingConvention(); + + /** + * Return true if all DB column and table names should use quoted identifiers. + */ + boolean isAllQuotedIdentifiers(); + + /** + * Return true if this Database is a Document store only instance (has no JDBC DB). + */ + boolean isDocStoreOnly(); + + /** + * Return the configuration for the ElasticSearch integration. + */ + DocStoreConfig getDocStoreConfig(); + + /** + * Return the constraint naming convention used in DDL generation. + */ + DbConstraintNaming getConstraintNaming(); + + /** + * Return the configuration for AutoTune. + */ + AutoTuneConfig getAutoTuneConfig(); + + /** + * Return true if the startup DataSource check should be skipped. + */ + boolean skipDataSourceCheck(); + + /** + * Return the DataSource. + */ + DataSource getDataSource(); + + /** + * Return the read only DataSource. + */ + DataSource getReadOnlyDataSource(); + + /** + * Return the configuration to build a DataSource using Ebean's own DataSource + * implementation. + */ + DataSourceBuilder getDataSourceConfig(); + + /** + * Return true if Ebean should create a DataSource for use with implicit read only transactions. + */ + boolean isAutoReadOnlyDataSource(); + + /** + * Return the configuration for the read only DataSource. + *

    + * This is only used if autoReadOnlyDataSource is true. + *

    + * The driver, url, username and password default to the configuration for the main DataSource if they are not + * set on this configuration. This means there is actually no need to set any configuration here and we only + * set configuration for url, username and password etc if it is different from the main DataSource. + */ + DataSourceBuilder getReadOnlyDataSourceConfig(); + + /** + * Return a value used to represent TRUE in the database. + *

    + * This is used for databases that do not support boolean natively. + *

    + * The value returned is either a Integer or a String (e.g. "1", or "T"). + */ + String getDatabaseBooleanTrue(); + + /** + * Return a value used to represent FALSE in the database. + *

    + * This is used for databases that do not support boolean natively. + *

    + * The value returned is either a Integer or a String (e.g. "0", or "F"). + */ + String getDatabaseBooleanFalse(); + + /** + * Return the number of DB sequence values that should be preallocated. + */ + int getDatabaseSequenceBatchSize(); + + /** + * Return the database platform name (can be null). + *

    + * If null then the platform is determined automatically via the JDBC driver + * information. + */ + String getDatabasePlatformName(); + + /** + * Return the database platform to use for this database. + */ + DatabasePlatform getDatabasePlatform(); + + /** + * Return the preferred DB platform IdType. + */ + IdType getIdType(); + + /** + * Return the EncryptKeyManager. + */ + EncryptKeyManager getEncryptKeyManager(); + + /** + * Return the EncryptDeployManager. + *

    + * This is optionally used to programmatically define which columns are + * encrypted instead of using the {@link Encrypted} Annotation. + */ + EncryptDeployManager getEncryptDeployManager(); + + /** + * Return the Encryptor used to encrypt data on the java client side (as + * opposed to DB encryption functions). + */ + Encryptor getEncryptor(); + + /** + * Return true if the Database instance should be created in offline mode. + */ + boolean isDbOffline(); + + /** + * Return the DbEncrypt used to encrypt and decrypt properties. + *

    + * Note that if this is not set then the DbPlatform may already have a + * DbEncrypt set and that will be used. + */ + DbEncrypt getDbEncrypt(); + + /** + * Return the configuration for DB types (such as UUID and custom mappings). + */ + PlatformConfig getPlatformConfig(); + + + /** + * Returns the UUID version mode. + */ + DatabaseConfig.UuidVersion getUuidVersion(); + + /** + * Return the UUID state file. + */ + String getUuidStateFile(); + + /** + * Returns the V1-UUID-NodeId + */ + String getUuidNodeId(); + + /** + * Return true if LocalTime should be persisted with nanos precision. + */ + boolean isLocalTimeWithNanos(); + + /** + * Return true if Duration should be persisted with nanos precision (SQL DECIMAL). + *

    + * Otherwise it is persisted with second precision (SQL INTEGER). + */ + boolean isDurationWithNanos(); + + /** + * Return true if the DB migration should run on server start. + */ + boolean isRunMigration(); + + /** + * Return true if the "drop all ddl" should be skipped. + *

    + * Typically we want to do this when using H2 (in memory) as our test database and the drop statements + * are not required so skipping the drop table statements etc makes it faster with less noise in the logs. + */ + boolean isDdlCreateOnly(); + + /** + * Return SQL script to execute after the "create all" DDL has been run. + *

    + * Typically this is a sql script that inserts test seed data when running tests. + * Place a sql script in src/test/resources that inserts test seed data. + */ + String getDdlSeedSql(); + + /** + * Return a SQL script to execute before the "create all" DDL has been run. + */ + String getDdlInitSql(); + + /** + * Return true if the DDL should be generated. + */ + boolean isDdlGenerate(); + + /** + * Return true if the DDL should be run. + */ + boolean isDdlRun(); + + /** + * Return true, if extra-ddl.xml should be executed. + */ + boolean isDdlExtra(); + + /** + * Return the header to use with DDL generation. + */ + String getDdlHeader(); + + /** + * Return a comma and equals delimited placeholders that are substituted in DDL scripts. + */ + String getDdlPlaceholders(); + + /** + * Return a map of placeholder values that are substituted in DDL scripts. + */ + Map getDdlPlaceholderMap(); + + /** + * Return true if the class path search should be disabled. + */ + boolean isDisableClasspathSearch(); + + /** + * Return the mode to use for Joda LocalTime support 'normal' or 'utc'. + */ + String getJodaLocalTimeMode(); + + /** + * Return packages to search for entities via class path search. + *

    + * This is only used if classes have not been explicitly specified. + */ + List getPackages(); + + /** + * Return the classes registered for this database. Typically, this includes + * entities and perhaps listeners. + */ + Set> classes(); + + /** + * Return true if L2 bean cache should be skipped once writes have occurred on a transaction. + *

    + * This defaults to true and means that for "find by id" and "find by natural key" + * queries that normally hit L2 bean cache automatically will not do so after a write/persist + * on the transaction. + *

    + *

    {@code
    +     *
    +     *   // assume Customer has L2 bean caching enabled ...
    +     *
    +     *   try (Transaction transaction = DB.beginTransaction()) {
    +     *
    +     *     // this uses L2 bean cache as the transaction
    +     *     // ... is considered "query only" at this point
    +     *     Customer.find.byId(42);
    +     *
    +     *     // transaction no longer "query only" once
    +     *     // ... a bean has been saved etc
    +     *     DB.save(someBean);
    +     *
    +     *     // will NOT use L2 bean cache as the transaction
    +     *     // ... is no longer considered "query only"
    +     *     Customer.find.byId(55);
    +     *
    +     *
    +     *
    +     *     // explicit control - please use L2 bean cache
    +     *
    +     *     transaction.setSkipCache(false);
    +     *     Customer.find.byId(77); // hit the l2 bean cache
    +     *
    +     *
    +     *     // explicit control - please don't use L2 bean cache
    +     *
    +     *     transaction.setSkipCache(true);
    +     *     Customer.find.byId(99); // skips l2 bean cache
    +     *
    +     *   }
    +     *
    +     * }
    + * + * @see Transaction#setSkipCache(boolean) + */ + boolean isSkipCacheAfterWrite(); + + /** + * Returns true if updates in JDBC batch default to include all properties by default. + */ + boolean isUpdateAllPropertiesInBatch(); + + /** + * Returns the resource directory. + */ + String getResourceDirectory(); + + /** + * @deprecated - migrate to {@link Settings#classes()}. + *

    + * Sorry if returning Set rather than List breaks code but it feels safer to + * do that than a subtle change to return a shallow copy which you will not detect. + */ + @Deprecated(forRemoval = true) + Set> getClasses(); + + /** + * Return the BeanQueryAdapter instances. + */ + List getQueryAdapters(); + + /** + * Return the custom IdGenerator instances. + */ + List getIdGenerators(); + + /** + * Return the list of BeanFindController instances. + */ + List getFindControllers(); + + /** + * Return the list of BeanPostLoader instances. + */ + List getPostLoaders(); + + /** + * Return the list of BeanPostLoader instances. + */ + List getPostConstructListeners(); + + /** + * Return the BeanPersistController instances. + */ + List getPersistControllers(); + + /** + * Return the BeanPersistListener instances. + */ + List getPersistListeners(); + + /** + * Return the list of BulkTableEventListener instances. + */ + List getBulkTableEventListeners(); + + /** + * Return the list of ServerConfigStartup instances. + */ + List getServerConfigStartupListeners(); + + /** + * Return the default PersistenceContextScope to be used if one is not explicitly set on a query. + *

    + * The PersistenceContextScope can specified on each query via {@link io.ebean + * .Query#setPersistenceContextScope(io.ebean.PersistenceContextScope)}. If it + * is not set on the query this default scope is used. + * + * @see Query#setPersistenceContextScope(PersistenceContextScope) + */ + PersistenceContextScope getPersistenceContextScope(); + + /** + * Return the ClassLoadConfig which is used to detect Joda, Java8 types etc and also + * create new instances of plugins given a className. + */ + ClassLoadConfig getClassLoadConfig(); + + /** + * Return the properties that we used for configuration and were set via a call to loadFromProperties(). + */ + Properties getProperties(); + + /** + * Return the Jackson ObjectMapper. + *

    + * Note that this is not strongly typed as Jackson ObjectMapper is an optional dependency. + */ + Object getObjectMapper(); + + /** + * Return true if eq("someProperty", null) should to generate "1=1" rather than "is null" sql expression. + */ + boolean isExpressionEqualsWithNullAsNoop(); + + /** + * Return true if native ILIKE expression should be used if supported by the database platform (e.g. Postgres). + */ + boolean isExpressionNativeIlike(); + + /** + * Return the enabled L2 cache regions. + */ + String getEnabledL2Regions(); + + /** + * Return true if L2 cache is disabled. + */ + boolean isDisableL2Cache(); + + /** + * Return true to use local only L2 cache. Effectively ignore l2 cache plugin like ebean-redis etc. + */ + boolean isLocalOnlyL2Cache(); + + /** + * Returns if we use javax.validation.constraints.NotNull + */ + boolean isUseValidationNotNull(); + + /** + * Return true if L2 cache notification should run in the foreground. + */ + boolean isNotifyL2CacheInForeground(); + + /** + * Return the time to live for ebean's internal query plan. + */ + int getQueryPlanTTLSeconds(); + + /** + * Return mapping locations to search for xml mapping via class path search. + */ + List getMappingLocations(); + + /** + * When false we need explicit @GeneratedValue mapping to assign + * Identity or Sequence generated values. When true Id properties are automatically + * assigned Identity or Sequence without the GeneratedValue mapping. + */ + boolean isIdGeneratorAutomatic(); + + /** + * Return true if query plan capture is enabled. + */ + boolean isQueryPlanEnable(); + + /** + * Return the query plan collection threshold in microseconds. + */ + long getQueryPlanThresholdMicros(); + + /** + * Return true if periodic capture of query plans is enabled. + */ + boolean isQueryPlanCapture(); + + /** + * Return the frequency to capture query plans. + */ + long getQueryPlanCapturePeriodSecs(); + + /** + * Return the time after which a capture query plans request will + * stop capturing more query plans. + *

    + * Effectively this controls the amount of load/time we want to + * allow for query plan capture. + */ + long getQueryPlanCaptureMaxTimeMillis(); + + /** + * Return the max number of query plans captured per request. + */ + int getQueryPlanCaptureMaxCount(); + + /** + * Return the listener used to process captured query plans. + */ + QueryPlanListener getQueryPlanListener(); + + /** + * Return true if metrics should be dumped when the server is shutdown. + */ + boolean isDumpMetricsOnShutdown(); + + /** + * Return the options for dumping metrics. + */ + String getDumpMetricsOptions(); + + /** + * Return true if entity classes should be loaded and registered via EntityClassRegister. + *

    + * When false we either register entity classes via application code or use classpath + * scanning to find and register entity classes. + */ + boolean isLoadModuleInfo(); + + /** + * Return the naming convention to apply to metrics names. + */ + Function getMetricNaming(); + + } } diff --git a/ebean-api/src/main/java/io/ebean/DatabaseFactory.java b/ebean-api/src/main/java/io/ebean/DatabaseFactory.java index a5eb97d2c..f887c1416 100644 --- a/ebean-api/src/main/java/io/ebean/DatabaseFactory.java +++ b/ebean-api/src/main/java/io/ebean/DatabaseFactory.java @@ -75,9 +75,10 @@ public final class DatabaseFactory { * * } */ - public static Database create(DatabaseBuilder config) { + public static Database create(DatabaseBuilder builder) { lock.lock(); try { + var config = builder.settings(); if (config.getName() == null) { throw new PersistenceException("The name is null (it is required)"); } @@ -131,7 +132,7 @@ public final class DatabaseFactory { } } - private static Database createInternal(DatabaseBuilder config) { + private static Database createInternal(DatabaseBuilder.Settings config) { return container(config.getContainerConfig()).createServer(config); } diff --git a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java index 2e3a29d36..0b614f2e5 100644 --- a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java +++ b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java @@ -61,7 +61,7 @@ import java.util.function.Function; * @author rbygrave * @see DatabaseFactory */ -public class DatabaseConfig implements DatabaseBuilder { +public class DatabaseConfig implements DatabaseBuilder.Settings { /** * The Database name. @@ -548,6 +548,11 @@ public class DatabaseConfig implements DatabaseBuilder { public DatabaseConfig() { } + @Override + public Settings settings() { + return this; + } + @Override public Clock getClock() { return clock; diff --git a/ebean-api/src/main/java/io/ebean/plugin/SpiServer.java b/ebean-api/src/main/java/io/ebean/plugin/SpiServer.java index 9f558571a..59d3dea2c 100644 --- a/ebean-api/src/main/java/io/ebean/plugin/SpiServer.java +++ b/ebean-api/src/main/java/io/ebean/plugin/SpiServer.java @@ -16,7 +16,7 @@ public interface SpiServer extends Database { /** * Return the DatabaseConfig. */ - DatabaseBuilder config(); + DatabaseBuilder.Settings config(); /** * Return the DatabasePlatform for this database. diff --git a/ebean-api/src/test/java/io/ebean/config/DatabaseConfigTest.java b/ebean-api/src/test/java/io/ebean/config/DatabaseConfigTest.java index 9e19c484a..d816584b2 100644 --- a/ebean-api/src/test/java/io/ebean/config/DatabaseConfigTest.java +++ b/ebean-api/src/test/java/io/ebean/config/DatabaseConfigTest.java @@ -18,7 +18,7 @@ class DatabaseConfigTest { @Test void testLoadFromEbeanProperties() { - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig().settings(); config.loadFromProperties(); assertEquals(PersistBatch.NONE, config.getPersistBatch()); @@ -33,7 +33,7 @@ class DatabaseConfigTest { Properties props = new Properties(); props.setProperty("ddl.initSql", "${user.home}" + fileSeparator + "initSql"); - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig().settings(); config.loadFromProperties(props); String ddlInitSql = config.getDdlInitSql(); @@ -84,46 +84,47 @@ class DatabaseConfigTest { config.loadFromProperties(props); - assertFalse(config.isDefaultServer()); - assertTrue(config.isDisableL2Cache()); - assertTrue(config.isNotifyL2CacheInForeground()); - assertTrue(config.isDbOffline()); - assertTrue(config.isAutoReadOnlyDataSource()); - assertTrue(config.isAutoLoadModuleInfo()); - assertTrue(config.isLoadModuleInfo()); - assertTrue(config.skipDataSourceCheck()); + var settings = config.settings(); + assertFalse(settings.isDefaultServer()); + assertTrue(settings.isDisableL2Cache()); + assertTrue(settings.isNotifyL2CacheInForeground()); + assertTrue(settings.isDbOffline()); + assertTrue(settings.isAutoReadOnlyDataSource()); + assertTrue(settings.isAutoLoadModuleInfo()); + assertTrue(settings.isLoadModuleInfo()); + assertTrue(settings.skipDataSourceCheck()); - assertTrue(config.isIdGeneratorAutomatic()); - assertFalse(config.getPlatformConfig().isCaseSensitiveCollation()); - assertTrue(config.getPlatformConfig().isForUpdateNoKey()); + assertTrue(settings.isIdGeneratorAutomatic()); + assertFalse(settings.getPlatformConfig().isCaseSensitiveCollation()); + assertTrue(settings.getPlatformConfig().isForUpdateNoKey()); - assertThat(config.getNamingConvention()).isInstanceOf(MatchingNamingConvention.class); + assertThat(settings.getNamingConvention()).isInstanceOf(MatchingNamingConvention.class); - assertEquals(MutationDetection.NONE, config.getJsonMutationDetection()); + assertEquals(MutationDetection.NONE, settings.getJsonMutationDetection()); config.setJsonMutationDetection(MutationDetection.SOURCE); - assertEquals(MutationDetection.SOURCE, config.getJsonMutationDetection()); - assertEquals(IdType.SEQUENCE, config.getIdType()); - assertEquals(PersistBatch.ALL, config.getPersistBatch()); - assertEquals(PersistBatch.ALL, config.getPersistBatchOnCascade()); - Assertions.assertEquals(PlatformConfig.DbUuid.BINARY, config.getPlatformConfig().getDbUuid()); - Assertions.assertEquals(JsonConfig.DateTime.MILLIS, config.getJsonDateTime()); - assertEquals(JsonConfig.Date.MILLIS, config.getJsonDate()); + assertEquals(MutationDetection.SOURCE, settings.getJsonMutationDetection()); + assertEquals(IdType.SEQUENCE, settings.getIdType()); + assertEquals(PersistBatch.ALL, settings.getPersistBatch()); + assertEquals(PersistBatch.ALL, settings.getPersistBatchOnCascade()); + Assertions.assertEquals(PlatformConfig.DbUuid.BINARY, settings.getPlatformConfig().getDbUuid()); + Assertions.assertEquals(JsonConfig.DateTime.MILLIS, settings.getJsonDateTime()); + assertEquals(JsonConfig.Date.MILLIS, settings.getJsonDate()); - assertEquals("r0,users,orgs", config.getEnabledL2Regions()); + assertEquals("r0,users,orgs", settings.getEnabledL2Regions()); - assertEquals(42, config.getJdbcFetchSizeFindEach()); - assertEquals(43, config.getJdbcFetchSizeFindList()); - assertEquals(4, config.getBackgroundExecutorSchedulePoolSize()); - assertEquals(98, config.getBackgroundExecutorShutdownSecs()); + assertEquals(42, settings.getJdbcFetchSizeFindEach()); + assertEquals(43, settings.getJdbcFetchSizeFindList()); + assertEquals(4, settings.getBackgroundExecutorSchedulePoolSize()); + assertEquals(98, settings.getBackgroundExecutorShutdownSecs()); - assertTrue(config.isQueryPlanEnable()); - assertEquals(10000, config.getQueryPlanThresholdMicros()); - assertTrue(config.isQueryPlanCapture()); - assertEquals(42, config.getQueryPlanCapturePeriodSecs()); - assertEquals(560, config.getQueryPlanCaptureMaxTimeMillis()); - assertEquals(7, config.getQueryPlanCaptureMaxCount()); + assertTrue(settings.isQueryPlanEnable()); + assertEquals(10000, settings.getQueryPlanThresholdMicros()); + assertTrue(settings.isQueryPlanCapture()); + assertEquals(42, settings.getQueryPlanCapturePeriodSecs()); + assertEquals(560, settings.getQueryPlanCaptureMaxTimeMillis()); + assertEquals(7, settings.getQueryPlanCaptureMaxCount()); - assertThat(config.getMappingLocations()).containsExactly("classpath:/foo","bar"); + assertThat(settings.getMappingLocations()).containsExactly("classpath:/foo","bar"); config.setPersistBatch(PersistBatch.NONE); config.setPersistBatchOnCascade(PersistBatch.NONE); @@ -138,19 +139,19 @@ class DatabaseConfigTest { props1.setProperty("ebean.notifyL2CacheInForeground", "false"); config.loadFromProperties(props1); - assertFalse(config.isDisableL2Cache()); - assertFalse(config.isNotifyL2CacheInForeground()); + assertFalse(settings.isDisableL2Cache()); + assertFalse(settings.isNotifyL2CacheInForeground()); - assertEquals(PersistBatch.ALL, config.getPersistBatch()); - assertEquals(PersistBatch.ALL, config.getPersistBatchOnCascade()); + assertEquals(PersistBatch.ALL, settings.getPersistBatch()); + assertEquals(PersistBatch.ALL, settings.getPersistBatchOnCascade()); config.setEnabledL2Regions("r0,orgs"); - assertEquals("r0,orgs", config.getEnabledL2Regions()); + assertEquals("r0,orgs", settings.getEnabledL2Regions()); } @Test void test_defaults() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseBuilder.Settings config = new DatabaseConfig().settings(); assertTrue(config.isIdGeneratorAutomatic()); assertTrue(config.isDefaultServer()); assertFalse(config.isAutoPersistUpdates()); @@ -185,7 +186,7 @@ class DatabaseConfigTest { void test_putServiceObject() { ObjectMapper objectMapper = new ObjectMapper(); - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig().settings(); config.putServiceObject(objectMapper); ObjectMapper mapper0 = config.getServiceObject(ObjectMapper.class); diff --git a/ebean-bom/pom.xml b/ebean-bom/pom.xml index 54e4b0a8e..f82651f6e 100644 --- a/ebean-bom/pom.xml +++ b/ebean-bom/pom.xml @@ -113,13 +113,13 @@ io.ebean ebean-joda-time - 13.24.0-RC1 + 13.24.0-RC2 io.ebean ebean-jackson-jsonnode - 13.24.0-RC1 + 13.24.0-RC2 diff --git a/ebean-core-type/src/main/java/io/ebean/core/type/ExtraTypeFactory.java b/ebean-core-type/src/main/java/io/ebean/core/type/ExtraTypeFactory.java index e4da6fd7b..010f86fec 100644 --- a/ebean-core-type/src/main/java/io/ebean/core/type/ExtraTypeFactory.java +++ b/ebean-core-type/src/main/java/io/ebean/core/type/ExtraTypeFactory.java @@ -12,5 +12,5 @@ public interface ExtraTypeFactory { /** * Provide extra types to Ebean. */ - List> createTypes(DatabaseBuilder config, Object objectMapper); + List> createTypes(DatabaseBuilder.Settings config, Object objectMapper); } diff --git a/ebean-core-type/src/main/java/io/ebean/core/type/ScalarTypeSetFactory.java b/ebean-core-type/src/main/java/io/ebean/core/type/ScalarTypeSetFactory.java index 89a6187d1..44ef36d72 100644 --- a/ebean-core-type/src/main/java/io/ebean/core/type/ScalarTypeSetFactory.java +++ b/ebean-core-type/src/main/java/io/ebean/core/type/ScalarTypeSetFactory.java @@ -12,6 +12,6 @@ public interface ScalarTypeSetFactory { * Create the ScalarTypeSet given the config and optional objectMapper. */ @Nullable - ScalarTypeSet createTypeSet(DatabaseBuilder config, @Nullable Object objectMapper); + ScalarTypeSet createTypeSet(DatabaseBuilder.Settings config, @Nullable Object objectMapper); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/api/GeoTypeProvider.java b/ebean-core/src/main/java/io/ebeaninternal/api/GeoTypeProvider.java index e9dcd6ebe..59566e437 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/api/GeoTypeProvider.java +++ b/ebean-core/src/main/java/io/ebeaninternal/api/GeoTypeProvider.java @@ -11,5 +11,5 @@ public interface GeoTypeProvider { /** * Create a binder for binding geometry types. */ - GeoTypeBinder createBinder(DatabaseBuilder config); + GeoTypeBinder createBinder(DatabaseBuilder.Settings config); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheManagerOptions.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheManagerOptions.java index e3af6137c..deda681e2 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheManagerOptions.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheManagerOptions.java @@ -13,7 +13,7 @@ import io.ebeaninternal.server.cluster.ClusterManager; public final class CacheManagerOptions { private final ClusterManager clusterManager; - private final DatabaseBuilder databaseBuilder; + private final DatabaseBuilder.Settings databaseBuilder; private final boolean localL2Caching; private CurrentTenantProvider currentTenantProvider; private QueryCacheEntryValidate queryCacheEntryValidate; @@ -30,7 +30,7 @@ public final class CacheManagerOptions { this.queryDefault = new ServerCacheOptions(); } - public CacheManagerOptions(ClusterManager clusterManager, DatabaseBuilder config, boolean localL2Caching) { + public CacheManagerOptions(ClusterManager clusterManager, DatabaseBuilder.Settings config, boolean localL2Caching) { this.clusterManager = clusterManager; this.databaseBuilder = config; this.localL2Caching = localL2Caching; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/ClassPathScanners.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/ClassPathScanners.java index 18b6a1d5b..d62dbde8c 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/ClassPathScanners.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/ClassPathScanners.java @@ -16,7 +16,7 @@ public class ClassPathScanners { /** * Return the list of ClassPathScanner services using DatabaseConfig service loader. */ - public static List find(DatabaseBuilder config) { + public static List find(DatabaseBuilder.Settings config) { List scanners = new ArrayList<>(); for (ClassPathScannerFactory factory : ServiceLoader.load(ClassPathScannerFactory.class)) { scanners.add(factory.createScanner(config.getClassLoadConfig().getClassLoader())); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java index 016722848..20a693e6e 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java @@ -37,7 +37,7 @@ public class DatabasePlatformFactory { /** * Create the appropriate database specific platform. */ - public DatabasePlatform create(DatabaseBuilder config) { + public DatabasePlatform create(DatabaseBuilder.Settings config) { try { String offlinePlatform = DbOffline.getPlatform(); if (offlinePlatform != null) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java index 3cd1c4713..70cb3ce52 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java @@ -58,7 +58,8 @@ public final class DefaultContainer implements SpiContainer { return createServer(config); } - private SpiBackgroundExecutor createBackgroundExecutor(DatabaseBuilder config) { + private SpiBackgroundExecutor createBackgroundExecutor(DatabaseBuilder builder) { + var config = builder.settings(); String namePrefix = "ebean-" + config.getName(); int schedulePoolSize = config.getBackgroundExecutorSchedulePoolSize(); int shutdownSecs = config.getBackgroundExecutorShutdownSecs(); @@ -70,9 +71,10 @@ public final class DefaultContainer implements SpiContainer { * Create the implementation from the configuration. */ @Override - public SpiEbeanServer createServer(DatabaseBuilder config) { + public SpiEbeanServer createServer(DatabaseBuilder builder) { lock.lock(); try { + var config = builder.settings(); long start = System.currentTimeMillis(); applyConfigServices(config); setNamingConvention(config); @@ -116,7 +118,7 @@ public final class DefaultContainer implements SpiContainer { } } - private void applyConfigServices(DatabaseBuilder config) { + private void applyConfigServices(DatabaseBuilder.Settings config) { if (config.isDefaultServer()) { for (DatabaseConfigProvider configProvider : ServiceLoader.load(DatabaseConfigProvider.class)) { configProvider.apply(config); @@ -159,7 +161,7 @@ public final class DefaultContainer implements SpiContainer { * Get the entities, scalarTypes, Listeners etc combining the class registered * ones with the already created instances. */ - private BootupClasses bootupClasses(DatabaseBuilder config) { + private BootupClasses bootupClasses(DatabaseBuilder.Settings config) { BootupClasses bootup = bootupClasses1(config); bootup.addServerConfigStartup(config.getServerConfigStartupListeners()); bootup.runServerConfigStartup(config); @@ -177,7 +179,7 @@ public final class DefaultContainer implements SpiContainer { /** * Get the class based entities, scalarTypes, Listeners etc. */ - private BootupClasses bootupClasses1(DatabaseBuilder config) { + private BootupClasses bootupClasses1(DatabaseBuilder.Settings config) { Set> classes = config.classes(); if (config.isDisableClasspathSearch() || (classes != null && !classes.isEmpty())) { // use classes we explicitly added via configuration @@ -189,7 +191,7 @@ public final class DefaultContainer implements SpiContainer { /** * Set the naming convention to underscore if it has not already been set. */ - private void setNamingConvention(DatabaseBuilder config) { + private void setNamingConvention(DatabaseBuilder.Settings config) { if (config.getNamingConvention() == null) { config.setNamingConvention(new UnderscoreNamingConvention()); } @@ -198,7 +200,7 @@ public final class DefaultContainer implements SpiContainer { /** * Set the DatabasePlatform if it has not already been set. */ - private void setDatabasePlatform(DatabaseBuilder config) { + private void setDatabasePlatform(DatabaseBuilder.Settings config) { DatabasePlatform platform = config.getDatabasePlatform(); if (platform == null) { if (config.getTenantMode().isDynamicDataSource()) { @@ -214,7 +216,7 @@ public final class DefaultContainer implements SpiContainer { /** * Set the DataSource if it has not already been set. */ - private void setDataSource(DatabaseBuilder config) { + private void setDataSource(DatabaseBuilder.Settings config) { if (isOfflineMode(config)) { log.log(DEBUG, "... DbOffline using platform [{0}]", DbOffline.getPlatform()); } else { @@ -222,7 +224,7 @@ public final class DefaultContainer implements SpiContainer { } } - private boolean isOfflineMode(DatabaseBuilder config) { + private boolean isOfflineMode(DatabaseBuilder.Settings config) { return config.isDbOffline() || DbOffline.isSet(); } @@ -236,7 +238,7 @@ public final class DefaultContainer implements SpiContainer { * checking may not work as expected. *

    */ - private boolean checkDataSource(DatabaseBuilder config) { + private boolean checkDataSource(DatabaseBuilder.Settings config) { if (isOfflineMode(config)) { return false; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index b9927be90..3327cd133 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -76,7 +76,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { private static final System.Logger log = CoreLog.internal; private final ReentrantLock lock = new ReentrantLock(); - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final String serverName; private final DatabasePlatform databasePlatform; private final TransactionManager transactionManager; @@ -170,7 +170,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { /** * Create the CallStackFactory depending if AutoTune is being used. */ - private CallOriginFactory initCallStackFactory(DatabaseBuilder config) { + private CallOriginFactory initCallStackFactory(DatabaseBuilder.Settings config) { if (!config.getAutoTuneConfig().isActive()) { // use a common CallStack for performance as we don't care with no AutoTune return new NoopCallOriginFactory(); @@ -224,7 +224,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } @Override - public DatabaseBuilder config() { + public DatabaseBuilder.Settings config() { return config; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/InitDataSource.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/InitDataSource.java index 631c0b7d8..b40b740e9 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/InitDataSource.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/InitDataSource.java @@ -12,16 +12,16 @@ import javax.sql.DataSource; */ final class InitDataSource { - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; /** * Create and set the main DataSource and read-only DataSource. */ - static void init(DatabaseBuilder config) { + static void init(DatabaseBuilder.Settings config) { new InitDataSource(config).initialise(); } - InitDataSource(DatabaseBuilder config) { + InitDataSource(DatabaseBuilder.Settings config) { this.config = config; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java index cf49f1637..9e2dbbfdc 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java @@ -69,7 +69,7 @@ public final class InternalConfiguration { private final TableModState tableModState; private final boolean online; - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final BootupClasses bootupClasses; private final DatabasePlatform databasePlatform; private final DeployInherit deployInherit; @@ -98,12 +98,12 @@ public final class InternalConfiguration { private boolean localL2Caching; InternalConfiguration(boolean online, ClusterManager clusterManager, SpiBackgroundExecutor backgroundExecutor, - DatabaseBuilder config, BootupClasses bootupClasses) { + DatabaseBuilder.Settings config, BootupClasses bootupClasses) { this.online = online; this.config = config; this.jacksonCorePresent = config.getClassLoadConfig().isJacksonCorePresent(); - this.clockService = new ClockService(config.getClock()); + this.clockService = new ClockService(config.settings().getClock()); this.tableModState = new TableModState(); this.logManager = initLogManager(); this.docStoreFactory = initDocStoreFactory(service(DocStoreFactory.class)); @@ -173,7 +173,7 @@ public final class InternalConfiguration { /** * Create and return the ExpressionFactory based on configuration and database platform. */ - private ExpressionFactory initExpressionFactory(DatabaseBuilder config) { + private ExpressionFactory initExpressionFactory(DatabaseBuilder.Settings config) { boolean nativeIlike = config.isExpressionNativeIlike() && databasePlatform.supportsNativeIlike(); return new DefaultExpressionFactory(config.isExpressionEqualsWithNullAsNoop(), nativeIlike); } @@ -331,7 +331,7 @@ public final class InternalConfiguration { return config.getDatabasePlatform(); } - public DatabaseBuilder getConfig() { + public DatabaseBuilder.Settings getConfig() { return config; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClassPathSearch.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClassPathSearch.java index 7d0b43c5f..0db785d1c 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClassPathSearch.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClassPathSearch.java @@ -24,11 +24,11 @@ public class BootupClassPathSearch { * Search the classPath for the classes we are interested in returning * them as BootupClasses. */ - public static BootupClasses search(DatabaseBuilder config) { + public static BootupClasses search(DatabaseBuilder.Settings config) { return new BootupClassPathSearch(config).getBootupClasses(); } - private BootupClassPathSearch(DatabaseBuilder config) { + private BootupClassPathSearch(DatabaseBuilder.Settings config) { // find packages defined in ebean.mf resources Set mfPackages = ManifestReader.create(config.getClassLoadConfig().getClassLoader()) .read("META-INF/ebean.mf") diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClasses.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClasses.java index 0a01cfa4a..726411dd2 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClasses.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/bootup/BootupClasses.java @@ -172,7 +172,7 @@ public class BootupClasses implements Predicate> { add(startupInstances, serverConfigStartupInstances, serverConfigStartupCandidates); } - public void addChangeLogInstances(DatabaseBuilder config) { + public void addChangeLogInstances(DatabaseBuilder.Settings config) { readAuditPrepare = config.getReadAuditPrepare(); readAuditLogger = config.getReadAuditLogger(); changeLogPrepare = config.getChangeLogPrepare(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java index 9efe9f306..06930f128 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java @@ -423,7 +423,7 @@ public class BeanDescriptor implements BeanType, STreeType, SpiBeanType { /** * Return the DatabaseConfig. */ - public DatabaseBuilder config() { + public DatabaseBuilder.Settings config() { return owner.config(); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java index ec0aca791..240ab41a2 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java @@ -79,7 +79,7 @@ public final class BeanDescriptorManager implements BeanDescriptorMap, SpiBeanTy private final NamingConvention namingConvention; private final DeployCreateProperties createProperties; private final BeanManagerFactory beanManagerFactory; - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final ChangeLogListener changeLogListener; private final ChangeLogRegister changeLogRegister; private final ChangeLogPrepare changeLogPrepare; @@ -196,19 +196,19 @@ public final class BeanDescriptorManager implements BeanDescriptorMap, SpiBeanTy /** * Return the AsOfViewSuffix based on the DbHistorySupport. */ - private String asOfViewSuffix(DatabasePlatform databasePlatform, DatabaseBuilder serverConfig) { + private String asOfViewSuffix(DatabasePlatform databasePlatform, DatabaseBuilder.Settings config) { DbHistorySupport historySupport = databasePlatform.historySupport(); // with historySupport returns a simple view suffix or the sql2011 as of timestamp suffix - return (historySupport == null) ? serverConfig.getAsOfViewSuffix() : historySupport.getAsOfViewSuffix(serverConfig.getAsOfViewSuffix()); + return (historySupport == null) ? config.getAsOfViewSuffix() : historySupport.getAsOfViewSuffix(config.getAsOfViewSuffix()); } /** * Return the versions between timestamp suffix based on the DbHistorySupport. */ - private String versionsBetweenSuffix(DatabasePlatform databasePlatform, DatabaseBuilder serverConfig) { + private String versionsBetweenSuffix(DatabasePlatform databasePlatform, DatabaseBuilder.Settings config) { DbHistorySupport historySupport = databasePlatform.historySupport(); // with historySupport returns a simple view suffix or the sql2011 versions between timestamp suffix - return (historySupport == null) ? serverConfig.getAsOfViewSuffix() : historySupport.getVersionsBetweenSuffix(serverConfig.getAsOfViewSuffix()); + return (historySupport == null) ? config.getAsOfViewSuffix() : historySupport.getVersionsBetweenSuffix(config.getAsOfViewSuffix()); } @Override @@ -217,7 +217,7 @@ public final class BeanDescriptorManager implements BeanDescriptorMap, SpiBeanTy } @Override - public DatabaseBuilder config() { + public DatabaseBuilder.Settings config() { return config; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorMap.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorMap.java index 5aa2d0166..e95cf2f12 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorMap.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorMap.java @@ -25,7 +25,7 @@ public interface BeanDescriptorMap { /** * Return the DatabaseConfig. */ - DatabaseBuilder config(); + DatabaseBuilder.Settings config(); /** * Return the Cache Manager. diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanLifecycleAdapterFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanLifecycleAdapterFactory.java index 4de9279b3..4eeff5f4a 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanLifecycleAdapterFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanLifecycleAdapterFactory.java @@ -34,7 +34,7 @@ final class BeanLifecycleAdapterFactory { private final boolean postConstructPresent; - BeanLifecycleAdapterFactory(DatabaseBuilder config) { + BeanLifecycleAdapterFactory(DatabaseBuilder.Settings config) { this.postConstructPresent = config.getClassLoadConfig().isJavaxPostConstructPresent(); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java index b920054cf..ff4b40a56 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/generatedproperty/GeneratedPropertyFactory.java @@ -27,7 +27,7 @@ public final class GeneratedPropertyFactory { private final ClassLoadConfig classLoadConfig; private final Map idGeneratorMap = new HashMap<>(); - public GeneratedPropertyFactory(boolean offlineMode, DatabaseBuilder config, List idGenerators) { + public GeneratedPropertyFactory(boolean offlineMode, DatabaseBuilder.Settings config, List idGenerators) { this.classLoadConfig = config.getClassLoadConfig(); this.insertFactory = new InsertTimestampFactory(classLoadConfig); this.updateFactory = new UpdateTimestampFactory(classLoadConfig); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java index ecc455152..1f56614d1 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java @@ -47,7 +47,7 @@ public class DeployBeanDescriptor { private static final PropOrder PROP_ORDER = new PropOrder(); - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final BeanDescriptorManager manager; /** * Map of BeanProperty Linked so as to preserve order. @@ -133,7 +133,7 @@ public class DeployBeanDescriptor { /** * Construct the BeanDescriptor. */ - public DeployBeanDescriptor(BeanDescriptorManager manager, Class beanType, DatabaseBuilder config) { + public DeployBeanDescriptor(BeanDescriptorManager manager, Class beanType, DatabaseBuilder.Settings config) { this.manager = manager; this.config = config; this.beanType = beanType; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/DeployUtil.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/DeployUtil.java index d728344f0..8da22e0c4 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/DeployUtil.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/DeployUtil.java @@ -44,7 +44,7 @@ public final class DeployUtil { private final Encryptor bytesEncryptor; private final boolean useValidationNotNull; - public DeployUtil(TypeManager typeMgr, DatabaseBuilder config) { + public DeployUtil(TypeManager typeMgr, DatabaseBuilder.Settings config) { this.typeManager = typeMgr; this.namingConvention = config.getNamingConvention(); this.dbPlatform = config.getDatabasePlatform(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotationConfig.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotationConfig.java index 2fd6d1e78..74268616b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotationConfig.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotationConfig.java @@ -31,7 +31,7 @@ final class ReadAnnotationConfig { private final ReadValidationAnnotations jakartaValidation; private final Set> metaAnnotations = new HashSet<>(); - ReadAnnotationConfig(GeneratedPropertyFactory generatedPropFactory, String asOfViewSuffix, String versionsBetweenSuffix, DatabaseBuilder config) { + ReadAnnotationConfig(GeneratedPropertyFactory generatedPropFactory, String asOfViewSuffix, String versionsBetweenSuffix, DatabaseBuilder.Settings config) { this.generatedPropFactory = generatedPropFactory; this.asOfViewSuffix = asOfViewSuffix; this.versionsBetweenSuffix = versionsBetweenSuffix; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotations.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotations.java index 5bb7ae54d..162d4cbb2 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotations.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/parse/ReadAnnotations.java @@ -12,7 +12,7 @@ public final class ReadAnnotations { private final ReadAnnotationConfig readConfig; - public ReadAnnotations(GeneratedPropertyFactory generatedPropFactory, String asOfViewSuffix, String versionsBetweenSuffix, DatabaseBuilder config) { + public ReadAnnotations(GeneratedPropertyFactory generatedPropFactory, String asOfViewSuffix, String versionsBetweenSuffix, DatabaseBuilder.Settings config) { this.readConfig = new ReadAnnotationConfig(generatedPropFactory, asOfViewSuffix, versionsBetweenSuffix, config); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryEngine.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryEngine.java index 73a1d9a2d..969d7ca25 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryEngine.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryEngine.java @@ -38,7 +38,7 @@ public final class CQueryEngine { private final CQueryHistorySupport historySupport; private final DatabasePlatform dbPlatform; - public CQueryEngine(DatabaseBuilder config, DatabasePlatform dbPlatform, Binder binder, Map asOfTableMapping, Map draftTableMap) { + public CQueryEngine(DatabaseBuilder.Settings config, DatabasePlatform dbPlatform, Binder binder, Map asOfTableMapping, Map draftTableMap) { this.dbPlatform = dbPlatform; this.defaultFetchSizeFindEach = config.getJdbcFetchSizeFindEach(); this.defaultFetchSizeFindList = config.getJdbcFetchSizeFindList(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java index f94bbd345..ba6dc3967 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java @@ -18,7 +18,7 @@ public final class TransactionManagerOptions { final SpiServer server; final boolean notifyL2CacheInForeground; - final DatabaseBuilder config; + final DatabaseBuilder.Settings config; final ClusterManager clusterManager; final BackgroundExecutor backgroundExecutor; @@ -33,8 +33,8 @@ public final class TransactionManagerOptions { final ClockService clockService; - public TransactionManagerOptions(SpiServer server, boolean notifyL2CacheInForeground, DatabaseBuilder config, TransactionScopeManager scopeManager, ClusterManager clusterManager, - BackgroundExecutor backgroundExecutor, DocStoreUpdateProcessor docStoreUpdateProcessor, + public TransactionManagerOptions(SpiServer server, boolean notifyL2CacheInForeground, DatabaseBuilder.Settings config, TransactionScopeManager scopeManager, + ClusterManager clusterManager, BackgroundExecutor backgroundExecutor, DocStoreUpdateProcessor docStoreUpdateProcessor, BeanDescriptorManager descMgr, DataSourceSupplier dataSourceSupplier, SpiProfileHandler profileHandler, SpiLogManager logManager, TableModState tableModState, ServerCacheNotify cacheNotify, ClockService clockService) { this.server = server; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeFactory.java index 881021efe..5b6e36be4 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeFactory.java @@ -16,9 +16,9 @@ import java.util.Date; */ final class DefaultTypeFactory { - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; - public DefaultTypeFactory(DatabaseBuilder config) { + public DefaultTypeFactory(DatabaseBuilder.Settings config) { this.config = config; } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index 4cc68f665..d781b2abc 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -76,7 +76,7 @@ public final class DefaultTypeManager implements TypeManager { /** * Create the DefaultTypeManager. */ - public DefaultTypeManager(DatabaseBuilder config, BootupClasses bootupClasses) { + public DefaultTypeManager(DatabaseBuilder.Settings config, BootupClasses bootupClasses) { this.jsonDateTime = config.getJsonDateTime(); this.jsonDate = config.getJsonDate(); this.typeMap = new ConcurrentHashMap<>(); @@ -108,7 +108,7 @@ public final class DefaultTypeManager implements TypeManager { } } - private void loadGeoTypeBinder(DatabaseBuilder config) { + private void loadGeoTypeBinder(DatabaseBuilder.Settings config) { GeoTypeProvider provider = config.getServiceObject(GeoTypeProvider.class); if (provider == null) { provider = ServiceUtil.service(GeoTypeProvider.class); @@ -139,7 +139,7 @@ public final class DefaultTypeManager implements TypeManager { /** * Load custom scalar types registered via ExtraTypeFactory and ServiceLoader. */ - private void loadTypesFromProviders(DatabaseBuilder config, Object objectMapper) { + private void loadTypesFromProviders(DatabaseBuilder.Settings config, Object objectMapper) { for (ExtraTypeFactory plugin : ServiceLoader.load(ExtraTypeFactory.class)) { for (ScalarType type : plugin.createTypes(config, objectMapper)) { add(type); @@ -616,7 +616,7 @@ public final class DefaultTypeManager implements TypeManager { } - private Object initObjectMapper(DatabaseBuilder config) { + private Object initObjectMapper(DatabaseBuilder.Settings config) { Object objectMapper = config.getObjectMapper(); if (objectMapper == null) { objectMapper = InitObjectMapper.init(); @@ -674,7 +674,7 @@ public final class DefaultTypeManager implements TypeManager { } - private void initialiseJavaTimeTypes(DatabaseBuilder config) { + private void initialiseJavaTimeTypes(DatabaseBuilder.Settings config) { ZoneId zoneId = zoneId(config); typeMap.put(java.nio.file.Path.class, new ScalarTypePath()); @@ -702,7 +702,7 @@ public final class DefaultTypeManager implements TypeManager { addType(Duration.class, (durationNanos) ? new ScalarTypeDurationWithNanos() : new ScalarTypeDuration()); } - private ZoneId zoneId(DatabaseBuilder config) { + private ZoneId zoneId(DatabaseBuilder.Settings config) { final String dataTimeZone = config.getDataTimeZone(); return (dataTimeZone == null) ? ZoneOffset.systemDefault() : TimeZone.getTimeZone(dataTimeZone).toZoneId(); } @@ -716,7 +716,7 @@ public final class DefaultTypeManager implements TypeManager { * Register all the standard types supported. This is the standard JDBC types * plus some other common types such as java.util.Date and java.util.Calendar. */ - private void initialiseStandard(DatabaseBuilder config) { + private void initialiseStandard(DatabaseBuilder.Settings config) { DatabasePlatform databasePlatform = config.getDatabasePlatform(); int platformClobType = databasePlatform.clobDbType(); int platformBlobType = databasePlatform.blobDbType(); diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java index 1a3f620ea..824477d43 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java @@ -19,12 +19,12 @@ import static org.junit.jupiter.api.Assertions.*; public class InitDataSourceTest { - private DatabaseBuilder newConfig(String readOnlyUrl) { + private DatabaseBuilder.Settings newConfig(String readOnlyUrl) { DatabaseBuilder config = new DatabaseConfig(); DataSourceConfig roConfig = new DataSourceConfig(); roConfig.setUrl(readOnlyUrl); config.setReadOnlyDataSourceConfig(roConfig); - return config; + return config.settings(); } @Test @@ -35,7 +35,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_null_whenSetNullExplicitly() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setReadOnlyDataSourceConfig(null); assertNull(new InitDataSource(config).readOnlyConfig()); @@ -57,7 +57,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_autoReadOnlyDataSource() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAutoReadOnlyDataSource(true); assertNotNull(new InitDataSource(config).readOnlyConfig()); @@ -65,7 +65,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_autoReadOnlyDataSource_expect_setToNull() { - DatabaseBuilder config = newConfig("none"); + var config = newConfig("none"); config.setAutoReadOnlyDataSource(true); final DataSourceBuilder readOnlyConfig = new InitDataSource(config).readOnlyConfig(); @@ -75,7 +75,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_urlSet() { - DatabaseBuilder config = newConfig("foo"); + var config = newConfig("foo"); final DataSourceBuilder roConfig = new InitDataSource(config).readOnlyConfig(); assertNotNull(roConfig); @@ -84,7 +84,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_readOnlyUrlSetOnMain() { - DatabaseBuilder config = newConfig(null); + var config = newConfig(null); // alternate location to set read-only url for developer convenience config.getDataSourceConfig().readOnlyUrl("bar"); @@ -95,7 +95,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_readOnlyUrlSetOnMain_withNone() { - DatabaseBuilder config = newConfig("None"); + var config = newConfig("None"); // alternate location to set read-only url for developer convenience config.getDataSourceConfig().readOnlyUrl("bar"); @@ -106,7 +106,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_bothReadOnlyUrlsSet() { - DatabaseBuilder config = newConfig("one"); + var config = newConfig("one"); config.getDataSourceConfig().readOnlyUrl("two"); final DataSourceBuilder roConfig = new InitDataSource(config).readOnlyConfig(); @@ -116,7 +116,7 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_readOnlyUrlSetOnMain_withNoneNone() { - DatabaseBuilder config = newConfig("none"); + var config = newConfig("none"); // alternate location to set read-only url for developer convenience config.getDataSourceConfig().readOnlyUrl("none"); @@ -126,8 +126,8 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_when_urlSet_2() { - DatabaseBuilder config = new DatabaseConfig(); - config.getReadOnlyDataSourceConfig().url("foo"); + DatabaseConfig config = new DatabaseConfig(); + config.settings().getReadOnlyDataSourceConfig().url("foo"); final DataSourceBuilder roConfig = new InitDataSource(config).readOnlyConfig(); assertNotNull(roConfig); @@ -136,7 +136,7 @@ public class InitDataSourceTest { @Test void isPostgresAllQuotedIdentifiers_true_when_postgres() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAllQuotedIdentifiers(true); config.setDatabasePlatform(new PostgresPlatform()); @@ -145,7 +145,7 @@ public class InitDataSourceTest { @Test void isPostgresAllQuotedIdentifiers_true_when_postgres9() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAllQuotedIdentifiers(true); config.setDatabasePlatform(new Postgres9Platform()); @@ -154,7 +154,7 @@ public class InitDataSourceTest { @Test void isPostgresAllQuotedIdentifiers_false() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAllQuotedIdentifiers(false); config.setDatabasePlatform(new PostgresPlatform()); @@ -163,7 +163,7 @@ public class InitDataSourceTest { @Test void isPostgresAllQuotedIdentifiers_false_when_notPostgres() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAllQuotedIdentifiers(true); config.setDatabasePlatform(new H2Platform()); @@ -172,7 +172,7 @@ public class InitDataSourceTest { @Test public void online() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.getDataSourceConfig().username("sa"); config.getDataSourceConfig().password(""); config.getDataSourceConfig().url("jdbc:h2:mem:dsTestOnline"); @@ -204,7 +204,7 @@ public class InitDataSourceTest { @Test public void offline() throws SQLException { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); DataSourceBuilder dsConfig = config.getDataSourceConfig(); dsConfig.username("sa"); dsConfig.password(""); diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/deploy/parse/AnnotationClassTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/deploy/parse/AnnotationClassTest.java index 78a9e6b90..31ede238e 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/deploy/parse/AnnotationClassTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/deploy/parse/AnnotationClassTest.java @@ -46,7 +46,7 @@ public class AnnotationClassTest { } @SuppressWarnings({"unchecked", "rawtypes"}) - private AnnotationClass createAnnotationClass(DatabaseBuilder config) { + private AnnotationClass createAnnotationClass(DatabaseBuilder.Settings config) { DeployUtil deployUtil = new DeployUtil(new DefaultTypeManager(config, new BootupClasses()), config); DeployBeanInfo deployBeanInfo = new DeployBeanInfo(deployUtil, new DeployBeanDescriptor<>(null, Customer.class, null)); @@ -54,9 +54,9 @@ public class AnnotationClassTest { return new AnnotationClass(deployBeanInfo, readAnnotationConfig); } - private DatabaseBuilder sqlServerPlatform(boolean allQuotedIdentifiers) { + private DatabaseBuilder.Settings sqlServerPlatform(boolean allQuotedIdentifiers) { SqlServer17Platform sqlServer17Platform = new SqlServer17Platform(); - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig().settings(); config.setDatabasePlatform(sqlServer17Platform); config.setAllQuotedIdentifiers(allQuotedIdentifiers); diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeFactoryTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeFactoryTest.java index d5b83e7c8..07780136d 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeFactoryTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeFactoryTest.java @@ -1,5 +1,6 @@ package io.ebeaninternal.server.type; +import io.ebean.config.DatabaseConfig; import io.ebean.core.type.ScalarType; import org.junit.jupiter.api.Test; @@ -10,7 +11,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class DefaultTypeFactoryTest { - DefaultTypeFactory defaultTypeFactory = new DefaultTypeFactory(null); + DefaultTypeFactory defaultTypeFactory = new DefaultTypeFactory(new DatabaseConfig()); @Test public void testCreateBoolean() throws Exception { diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeManagerTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeManagerTest.java index 68adea658..646275c95 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeManagerTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/type/DefaultTypeManagerTest.java @@ -21,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class DefaultTypeManagerTest { private DefaultTypeManager create() { - DatabaseBuilder serverConfig = new DatabaseConfig(); + var serverConfig = new DatabaseConfig(); serverConfig.setDatabasePlatform(new PostgresPlatform()); BootupClasses bootupClasses = new BootupClasses(); return new DefaultTypeManager(serverConfig, bootupClasses); diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/type/TestTypeManager.java b/ebean-core/src/test/java/io/ebeaninternal/server/type/TestTypeManager.java index b6c1e0bf2..3aa50c69b 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/type/TestTypeManager.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/type/TestTypeManager.java @@ -122,7 +122,7 @@ class TestTypeManager extends BaseTest { } private DefaultTypeManager createTypeManager() { - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig(); config.setDatabasePlatform(new H2Platform()); BootupClasses bootupClasses = new BootupClasses(); @@ -132,7 +132,7 @@ class TestTypeManager extends BaseTest { } private DefaultTypeManager createTypeManagerDefaultEnumTypeString() { - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig(); config.setDatabasePlatform(new H2Platform()); config.setDefaultEnumType(EnumType.STRING); diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java index bb2516e88..9fb81acf1 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java @@ -51,7 +51,7 @@ public class DdlGenerator implements SpiDdlGenerator { public DdlGenerator(SpiEbeanServer server) { this.server = server; - final DatabaseBuilder config = server.config(); + final var config = server.config(); this.jaxbPresent = Detect.isJAXBPresent(config); this.generateDdl = config.isDdlGenerate(); this.extraDdl = config.isDdlExtra(); @@ -318,7 +318,7 @@ public class DdlGenerator implements SpiDdlGenerator { /** * Create the ScriptTransform for placeholder key/value replacement. */ - private ScriptTransform createScriptTransform(DatabaseBuilder config) { + private ScriptTransform createScriptTransform(DatabaseBuilder.Settings config) { return ScriptTransform.build(config.getDdlPlaceholders(), config.getDdlPlaceholderMap()); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index 376aaa748..c44c6da5f 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -73,7 +73,7 @@ public class DefaultDbMigration implements DbMigration { protected DatabasePlatform databasePlatform; private boolean vanillaPlatform; protected List platforms = new ArrayList<>(); - protected DatabaseBuilder databaseBuilder; + protected DatabaseBuilder.Settings databaseBuilder; protected DbConstraintNaming constraintNaming; protected Boolean strictMode; protected Boolean includeGeneratedFileComment; @@ -114,7 +114,8 @@ public class DefaultDbMigration implements DbMigration { } @Override - public void setServerConfig(DatabaseBuilder config) { + public void setServerConfig(DatabaseBuilder builder) { + var config = builder.settings(); if (this.databaseBuilder == null) { this.databaseBuilder = config; } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/Detect.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/Detect.java index 0f54abe15..7da655e23 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/Detect.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/Detect.java @@ -10,7 +10,7 @@ public class Detect { /** * Return true if JAXB is present. */ - public static boolean isJAXBPresent(DatabaseBuilder config) { + public static boolean isJAXBPresent(DatabaseBuilder.Settings config) { return config.getClassLoadConfig().isPresent("jakarta.xml.bind.JAXBException"); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandler.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandler.java index 618b5c56f..1b5404465 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandler.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandler.java @@ -14,7 +14,7 @@ public class BaseDdlHandler implements DdlHandler { protected final TableDdl tableDdl; - public BaseDdlHandler(DatabaseBuilder config, PlatformDdl platformDdl) { + public BaseDdlHandler(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { this(config, platformDdl, new BaseTableDdl(config, platformDdl)); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java index 4ad068e34..07b6b0ade 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java @@ -155,7 +155,7 @@ public class BaseTableDdl implements TableDdl { /** * Construct with a naming convention and platform specific DDL. */ - public BaseTableDdl(DatabaseBuilder config, PlatformDdl platformDdl) { + public BaseTableDdl(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { this.namingConvention = config.getNamingConvention(); this.naming = config.getConstraintNaming(); this.historyTableSuffix = config.getHistoryTableSuffix(); diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdl.java index d39f810d9..91a4d43bc 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdl.java @@ -18,7 +18,7 @@ public class ClickHouseDdl extends PlatformDdl { } @Override - public DdlHandler createDdlHandler(DatabaseBuilder config) { + public DdlHandler createDdlHandler(DatabaseBuilder.Settings config) { return new ClickHouseDdlHandler(config, this); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdlHandler.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdlHandler.java index 813b17828..9d7bca961 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdlHandler.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseDdlHandler.java @@ -5,7 +5,7 @@ import io.ebeaninternal.dbmigration.ddlgeneration.BaseDdlHandler; public class ClickHouseDdlHandler extends BaseDdlHandler { - public ClickHouseDdlHandler(DatabaseBuilder config, PlatformDdl platformDdl) { + public ClickHouseDdlHandler(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { super(config, platformDdl, new ClickHouseTableDdl(config, platformDdl)); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseTableDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseTableDdl.java index 106c2626a..d3fcb2331 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseTableDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/ClickHouseTableDdl.java @@ -6,7 +6,7 @@ import io.ebeaninternal.dbmigration.migration.CreateTable; public class ClickHouseTableDdl extends BaseTableDdl { - public ClickHouseTableDdl(DatabaseBuilder config, PlatformDdl platformDdl) { + public ClickHouseTableDdl(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { super(config, platformDdl); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Db2HistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Db2HistoryDdl.java index b005278ad..e03c4f3c1 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Db2HistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Db2HistoryDdl.java @@ -20,7 +20,7 @@ public class Db2HistoryDdl extends DbTableBasedHistoryDdl implements PlatformHis private String transactionId; @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { super.configure(config, platformDdl); this.systemPeriodStart = config.getAsOfSysPeriod() + "_start"; this.systemPeriodEnd = config.getAsOfSysPeriod() + "_end"; diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTableBasedHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTableBasedHistoryDdl.java index 6c584878e..2113319a9 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTableBasedHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTableBasedHistoryDdl.java @@ -16,7 +16,7 @@ public abstract class DbTableBasedHistoryDdl implements PlatformHistoryDdl.Table protected PlatformDdl platformDdl; @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { this.platformDdl = platformDdl; this.historySuffix = config.getHistoryTableSuffix(); this.constraintNaming = config.getConstraintNaming(); diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java index eb85459a8..ab441a3f5 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java @@ -28,7 +28,7 @@ public abstract class DbTriggerBasedHistoryDdl extends DbTableBasedHistoryDdl im } @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { super.configure(config, platformDdl); this.sysPeriod = config.getAsOfSysPeriod(); this.viewSuffix = config.getAsOfViewSuffix(); diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java index 38daedab2..8bf4284ba 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java @@ -17,7 +17,7 @@ public class HanaHistoryDdl extends DbTableBasedHistoryDdl implements PlatformHi private String systemPeriodEnd; @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { super.configure(config, platformDdl); this.systemPeriodStart = config.getAsOfSysPeriod() + "_start"; this.systemPeriodEnd = config.getAsOfSysPeriod() + "_end"; diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MariaDbHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MariaDbHistoryDdl.java index 1faffeb64..6e65330b6 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MariaDbHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MariaDbHistoryDdl.java @@ -16,7 +16,7 @@ public class MariaDbHistoryDdl implements PlatformHistoryDdl { private PlatformDdl platformDdl; @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { this.platformDdl = platformDdl; } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NoHistorySupportDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NoHistorySupportDdl.java index 10d08718f..8400af8dc 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NoHistorySupportDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NoHistorySupportDdl.java @@ -13,7 +13,7 @@ import io.ebeaninternal.dbmigration.model.MTable; public class NoHistorySupportDdl implements PlatformHistoryDdl { @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { // does nothing } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java index 9efc25123..a11d2a12e 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java @@ -105,7 +105,7 @@ public class PlatformDdl { /** * Set configuration options. */ - public void configure(DatabaseBuilder config) { + public void configure(DatabaseBuilder.Settings config) { historyDdl.configure(config, this); naming = config.getConstraintNaming(); } @@ -113,7 +113,7 @@ public class PlatformDdl { /** * Create a DdlHandler for the specific database platform. */ - public DdlHandler createDdlHandler(DatabaseBuilder config) { + public DdlHandler createDdlHandler(DatabaseBuilder.Settings config) { return new BaseDdlHandler(config, this); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformHistoryDdl.java index 41f62ec76..a07224342 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformHistoryDdl.java @@ -14,7 +14,7 @@ public interface PlatformHistoryDdl { /** * Configure typically reading the necessary parameters from DatabaseConfig and Platform. */ - void configure(DatabaseBuilder config, PlatformDdl platformDdl); + void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl); /** * Creates a new table and add history support to the table using platform specific mechanism. diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java index a0b1519cb..88eb895e6 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java @@ -22,7 +22,7 @@ public class SqlServerHistoryDdl implements PlatformHistoryDdl { protected String historySuffix; @Override - public void configure(DatabaseBuilder config, PlatformDdl platformDdl) { + public void configure(DatabaseBuilder.Settings config, PlatformDdl platformDdl) { this.systemPeriodStart = config.getAsOfSysPeriod() + "From"; this.systemPeriodEnd = config.getAsOfSysPeriod() + "To"; this.platformDdl = platformDdl; diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java index c0938701a..02b90c9a2 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/model/PlatformDdlWriter.java @@ -26,13 +26,13 @@ public class PlatformDdlWriter { private static final System.Logger logger = AppLog.getLogger(PlatformDdlWriter.class); - private final DatabaseBuilder databaseBuilder; + private final DatabaseBuilder.Settings config; private final PlatformDdl platformDdl; private final int lockTimeoutSeconds; - public PlatformDdlWriter(DatabasePlatform platform, DatabaseBuilder dbConfig, int lockTimeoutSeconds) { + public PlatformDdlWriter(DatabasePlatform platform, DatabaseBuilder.Settings config, int lockTimeoutSeconds) { this.platformDdl = PlatformDdlBuilder.create(platform); - this.databaseBuilder = dbConfig; + this.config = config; this.lockTimeoutSeconds = lockTimeoutSeconds; } @@ -87,7 +87,7 @@ public class PlatformDdlWriter { * Write the 'Apply' DDL buffers to the writer. */ protected void writeApplyDdl(Writer writer, DdlWrite ddl) throws IOException { - String header = databaseBuilder.getDdlHeader(); + String header = config.getDdlHeader(); if (header != null && !header.isEmpty()) { writer.append(header).append('\n'); } @@ -98,7 +98,7 @@ public class PlatformDdlWriter { * Return the platform specific DdlHandler (to generate DDL). */ protected DdlHandler handler() { - return platformDdl.createDdlHandler(databaseBuilder); + return platformDdl.createDdlHandler(config); } /** diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java index d90b1d14e..7266ed90c 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java @@ -22,7 +22,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { private static boolean useV1Syntax = Boolean.getBoolean("ebean.h2.useV1Syntax"); - private final DatabaseBuilder serverConfig = new DatabaseConfig(); + private final DatabaseConfig serverConfig = new DatabaseConfig(); private DdlHandler handler(DatabasePlatform platform) { return PlatformDdlBuilder.create(platform).createDdlHandler(serverConfig); diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java index dc63608af..f6d42cb29 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java @@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class BaseTableDdlTest { - private final DatabaseBuilder serverConfig = new DatabaseConfig(); + private final DatabaseConfig serverConfig = new DatabaseConfig(); private final PlatformDdl h2ddl = PlatformDdlBuilder.create(new H2Platform()); @Test diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java index 733368700..52ca8e96e 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java @@ -36,7 +36,7 @@ public class PlatformDdl_AlterColumnTest { private final SoftAssertions softly = new SoftAssertions(); { - DatabaseBuilder serverConfig = DB.getDefault().pluginApi().config(); + DatabaseBuilder.Settings serverConfig = DB.getDefault().pluginApi().config(); sqlServerDdl.configure(serverConfig); } diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_CreateIndexTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_CreateIndexTest.java index 9c7c55c7d..0b26df48a 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_CreateIndexTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_CreateIndexTest.java @@ -27,7 +27,7 @@ public class PlatformDdl_CreateIndexTest { private final PlatformDdl db2LuwDdl = PlatformDdlBuilder.create(new DB2LuwPlatform()); { - DatabaseBuilder config = DB.getDefault().pluginApi().config(); + DatabaseBuilder.Settings config = DB.getDefault().pluginApi().config(); h2Ddl.configure(config); pgDdl.configure(config); mysqlDdl.configure(config); @@ -38,7 +38,6 @@ public class PlatformDdl_CreateIndexTest { } WriteCreateIndex writeCreateIndex() { - return writeCreateIndex(true, true); } diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java index 35e012a5f..75a5b7430 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java @@ -49,7 +49,7 @@ public class PlatformDdl_dropUniqueConstraintTest { sql = mysqlDdl.alterTableDropUniqueConstraint("mytab", "uq_name"); assertEquals("alter table mytab drop index uq_name", sql); - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); hanaDdl.configure(config); sql = hanaDdl.alterTableDropUniqueConstraint("mytab", "uq_name"); assertEquals("delimiter $$\n" + diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java index 51fbf6605..53a8a6038 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java @@ -55,7 +55,7 @@ public class ModelBuildBeanVisitorTest extends BaseTestCase { ModelContainer model = new ModelContainer(); - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2"); config.loadFromProperties(); config.setName("h2other"); diff --git a/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisExtraTypeFactory.java b/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisExtraTypeFactory.java index 1630f968c..67c3cc7df 100644 --- a/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisExtraTypeFactory.java +++ b/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisExtraTypeFactory.java @@ -16,7 +16,7 @@ import java.util.List; public class PostgisExtraTypeFactory implements ExtraTypeFactory { @Override - public List> createTypes(DatabaseBuilder config, Object objectMapper) { + public List> createTypes(DatabaseBuilder.Settings config, Object objectMapper) { List> list = new ArrayList<>(); list.add(new ScalarTypePgisPoint()); diff --git a/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisGeoTypeBindProvider.java b/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisGeoTypeBindProvider.java index ab151db1d..2b4bbd7a1 100644 --- a/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisGeoTypeBindProvider.java +++ b/ebean-postgis-types/src/main/java/io/ebean/postgis/PostgisGeoTypeBindProvider.java @@ -7,7 +7,7 @@ import io.ebeaninternal.server.type.GeoTypeBinder; public class PostgisGeoTypeBindProvider implements GeoTypeProvider { @Override - public GeoTypeBinder createBinder(DatabaseBuilder config) { + public GeoTypeBinder createBinder(DatabaseBuilder.Settings config) { boolean withGeolatte = config.getClassLoadConfig().isPresent("org.geolatte.geom.Geometry"); return new PostgisGeoTypeBinder(withGeolatte); } diff --git a/ebean-redis/src/main/java/io/ebean/redis/RedisCacheFactory.java b/ebean-redis/src/main/java/io/ebean/redis/RedisCacheFactory.java index 6eda94bbd..e92676b89 100644 --- a/ebean-redis/src/main/java/io/ebean/redis/RedisCacheFactory.java +++ b/ebean-redis/src/main/java/io/ebean/redis/RedisCacheFactory.java @@ -74,7 +74,7 @@ final class RedisCacheFactory implements ServerCacheFactory { private final ReentrantLock lock = new ReentrantLock(); private ServerCacheNotify listener; - RedisCacheFactory(DatabaseBuilder config, BackgroundExecutor executor) { + RedisCacheFactory(DatabaseBuilder.Settings config, BackgroundExecutor executor) { this.executor = executor; this.nearCacheNotify = new DNearCacheNotify(); MetricFactory factory = MetricFactory.get(); @@ -95,7 +95,7 @@ final class RedisCacheFactory implements ServerCacheFactory { /** * Return the JedisPool to use (only 1 at this stage). */ - private JedisPool getJedisPool(DatabaseBuilder config) { + private JedisPool getJedisPool(DatabaseBuilder.Settings config) { JedisPool jedisPool = config.getServiceObject(JedisPool.class); if (jedisPool != null) { return jedisPool; diff --git a/ebean-redis/src/main/java/io/ebean/redis/RedisCachePlugin.java b/ebean-redis/src/main/java/io/ebean/redis/RedisCachePlugin.java index 1edea4674..e2fcc6fc7 100644 --- a/ebean-redis/src/main/java/io/ebean/redis/RedisCachePlugin.java +++ b/ebean-redis/src/main/java/io/ebean/redis/RedisCachePlugin.java @@ -12,6 +12,6 @@ public class RedisCachePlugin implements ServerCachePlugin { */ @Override public ServerCacheFactory create(DatabaseBuilder config, BackgroundExecutor executor) { - return new RedisCacheFactory(config, executor); + return new RedisCacheFactory(config.settings(), executor); } } diff --git a/ebean-test/pom.xml b/ebean-test/pom.xml index ab056e9c0..b5b3ab1ef 100644 --- a/ebean-test/pom.xml +++ b/ebean-test/pom.xml @@ -135,14 +135,14 @@ io.ebean ebean-joda-time - 13.24.0-RC1 + 13.24.0-RC2 test io.ebean ebean-jackson-jsonnode - 13.24.0-RC1 + 13.24.0-RC2 test diff --git a/ebean-test/src/main/java/io/ebean/test/config/AutoConfigureForTesting.java b/ebean-test/src/main/java/io/ebean/test/config/AutoConfigureForTesting.java index 3ff4c5113..668eb86bf 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/AutoConfigureForTesting.java +++ b/ebean-test/src/main/java/io/ebean/test/config/AutoConfigureForTesting.java @@ -31,7 +31,8 @@ public class AutoConfigureForTesting implements AutoConfigure { private final String environmentDb = System.getProperty("db"); @Override - public void preConfigure(DatabaseBuilder config) { + public void preConfigure(DatabaseBuilder builder) { + var config = builder.settings(); Properties properties = config.getProperties(); if (properties != null) { // trigger determination of docker.host system property if not already done @@ -55,7 +56,8 @@ public class AutoConfigureForTesting implements AutoConfigure { } @Override - public void postConfigure(DatabaseBuilder config) { + public void postConfigure(DatabaseBuilder builder) { + var config = builder.settings(); if (!config.isDefaultServer()) { return; } @@ -87,7 +89,7 @@ public class AutoConfigureForTesting implements AutoConfigure { /** * Check if this is not the primary server and return true if that is the case. */ - private boolean isExtraServer(DatabaseBuilder config, Properties properties) { + private boolean isExtraServer(DatabaseBuilder.Settings config, Properties properties) { String extraDb = properties.getProperty("ebean.test.extraDb.dbName", properties.getProperty("ebean.test.extraDb")); if (extraDb != null && extraDb.equals(config.getName())) { config.setDefaultServer(false); @@ -99,7 +101,7 @@ public class AutoConfigureForTesting implements AutoConfigure { /** * Setup the DataSource on the extra database if necessary. */ - private void setupExtraDataSourceIfNecessary(DatabaseBuilder config) { + private void setupExtraDataSourceIfNecessary(DatabaseBuilder.Settings config) { DataSourceBuilder dataSourceConfig = config.getDataSourceConfig(); if (dataSourceConfig == null || dataSourceConfig.settings().getUsername() == null) { new PlatformAutoConfig(environmentDb, config) @@ -110,14 +112,14 @@ public class AutoConfigureForTesting implements AutoConfigure { /** * Setup support for Who, Multi-Tenant and DB encryption if they are not already set. */ - private void setupProviders(DatabaseBuilder config) { + private void setupProviders(DatabaseBuilder.Settings config) { new ProviderAutoConfig(config).run(); } /** * Setup the platform for testing including docker as needed and adjusting datasource config as needed. */ - private void setupPlatform(String db, DatabaseBuilder config) { + private void setupPlatform(String db, DatabaseBuilder.Settings config) { new PlatformAutoConfig(db, config).run(); } } diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java b/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java index 67feefc14..3c8488798 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java @@ -37,11 +37,11 @@ class Config { private String schema; private String username; private String password; - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private boolean containerDropCreate; private final Properties dockerProperties = new Properties(); - Config(String db, String platform, String databaseName, DatabaseBuilder config) { + Config(String db, String platform, String databaseName, DatabaseBuilder.Settings config) { this.db = db; this.platform = platform; this.dockerPlatform = platform; diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java b/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java index aa2d84710..8ef841025 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java @@ -38,14 +38,14 @@ public class PlatformAutoConfig { KNOWN_PLATFORMS.put("yugabyte", new YugabyteSetup()); } - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final Properties properties; private String db; private String platform; private PlatformSetup platformSetup; private String databaseName; - public PlatformAutoConfig(String db, DatabaseBuilder config) { + public PlatformAutoConfig(String db, DatabaseBuilder.Settings config) { this.db = db; this.config = config; this.properties = config.getProperties(); diff --git a/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java b/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java index c5658f229..2c2983436 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java +++ b/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java @@ -16,10 +16,10 @@ public class ProviderAutoConfig { private static final System.Logger log = AppLog.getLogger("io.ebean.test"); - private final DatabaseBuilder config; + private final DatabaseBuilder.Settings config; private final Properties properties; - public ProviderAutoConfig(DatabaseBuilder config) { + public ProviderAutoConfig(DatabaseBuilder.Settings config) { this.config = config; this.properties = config.getProperties(); } diff --git a/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java b/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java index 168629694..94ed1a9bb 100644 --- a/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java +++ b/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java @@ -38,7 +38,7 @@ class ConfigTest { @Test void extensions_whenNoSetValues() { - DatabaseBuilder databaseBuilder = new DatabaseConfig(); + DatabaseConfig databaseBuilder = new DatabaseConfig(); databaseBuilder.loadFromProperties(new Properties()); Config config = new Config("db", "postgis", "db", databaseBuilder); @@ -56,7 +56,7 @@ class ConfigTest { @Test void extensions_whenSetValues() { - DatabaseBuilder databaseBuilder = new DatabaseConfig(); + DatabaseConfig databaseBuilder = new DatabaseConfig(); Properties properties = new Properties(); properties.setProperty("ebean.test.extensions", "x,y"); properties.setProperty("ebean.test.extraDb.extensions", "z"); @@ -78,7 +78,7 @@ class ConfigTest { Properties p = new Properties(); p.setProperty("ebean.test.extraDb", "other"); - DatabaseBuilder serverConfig = new DatabaseConfig(); + DatabaseConfig serverConfig = new DatabaseConfig(); serverConfig.loadFromProperties(p); Config config = new Config("other", "postgres", "other", serverConfig); @@ -100,7 +100,7 @@ class ConfigTest { Properties p = new Properties(); p.setProperty("ebean.test.extraDb.dbName", "other"); - DatabaseBuilder serverConfig = new DatabaseConfig(); + DatabaseConfig serverConfig = new DatabaseConfig(); serverConfig.loadFromProperties(p); Config config = new Config("other", "postgres", "other", serverConfig); @@ -126,7 +126,7 @@ class ConfigTest { p.setProperty("ebean.test.extraDb.password", "other_pwd"); p.setProperty("ebean.test.extraDb.url", "other_url"); - DatabaseBuilder serverConfig = new DatabaseConfig(); + DatabaseConfig serverConfig = new DatabaseConfig(); serverConfig.setName("scOther"); serverConfig.loadFromProperties(p); @@ -151,7 +151,7 @@ class ConfigTest { sourceProperties.setProperty("ebean.test.dbName", "main"); sourceProperties.setProperty("ebean.test.extraDb.dbName", "central"); - DatabaseBuilder serverConfig = new DatabaseConfig(); + DatabaseConfig serverConfig = new DatabaseConfig(); serverConfig.setName("main"); serverConfig.loadFromProperties(sourceProperties); @@ -220,7 +220,7 @@ class ConfigTest { } private Config createConfig(Properties p) { - DatabaseBuilder serverConfig = new DatabaseConfig(); + DatabaseConfig serverConfig = new DatabaseConfig(); serverConfig.setName("scOther"); serverConfig.loadFromProperties(p); return new Config("db_name", "postgres", "db_name", serverConfig); diff --git a/ebean-test/src/test/java/io/ebean/xtest/config/DbMigrationConfigTest.java b/ebean-test/src/test/java/io/ebean/xtest/config/DbMigrationConfigTest.java index 06b885191..34c7c3713 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/config/DbMigrationConfigTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/config/DbMigrationConfigTest.java @@ -16,7 +16,7 @@ public class DbMigrationConfigTest { @Test public void testLoad() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2other"); config.loadFromProperties(); config.setDefaultServer(false); diff --git a/ebean-test/src/test/java/io/ebean/xtest/config/PlatformNoGeneratedKeysTest.java b/ebean-test/src/test/java/io/ebean/xtest/config/PlatformNoGeneratedKeysTest.java index 34afc8256..db3c9622b 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/config/PlatformNoGeneratedKeysTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/config/PlatformNoGeneratedKeysTest.java @@ -89,7 +89,7 @@ public class PlatformNoGeneratedKeysTest { private static Database testH2Server() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2_noGeneratedKeys"); OtherH2Platform platform = new OtherH2Platform(); diff --git a/ebean-test/src/test/java/io/ebean/xtest/dbmigration/DbMigrationGenerateTest.java b/ebean-test/src/test/java/io/ebean/xtest/dbmigration/DbMigrationGenerateTest.java index 8b387a8da..6d19a976b 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/dbmigration/DbMigrationGenerateTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/dbmigration/DbMigrationGenerateTest.java @@ -89,7 +89,7 @@ public class DbMigrationGenerateTest { migration.addPlatform(Platform.YUGABYTE); - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("migrationtest"); config.loadFromProperties(); config.setRegister(false); diff --git a/ebean-test/src/test/java/io/ebean/xtest/event/BeanFindControllerTest.java b/ebean-test/src/test/java/io/ebean/xtest/event/BeanFindControllerTest.java index 8032a4f7e..03e9518a7 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/event/BeanFindControllerTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/event/BeanFindControllerTest.java @@ -27,7 +27,7 @@ public class BeanFindControllerTest extends BaseTestCase { @Test public void test() { - DatabaseBuilder config = new DatabaseConfig(); + var config = new DatabaseConfig(); config.setName("h2otherfind"); config.loadFromProperties(); @@ -170,7 +170,7 @@ public class BeanFindControllerTest extends BaseTestCase { } private Database prepareSoftRefs() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2otherfind"); config.loadFromProperties(); diff --git a/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiEbeanServer.java b/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiEbeanServer.java index c44de8899..184ef9009 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiEbeanServer.java +++ b/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiEbeanServer.java @@ -126,7 +126,7 @@ public class TDSpiEbeanServer extends TDSpiServer implements SpiEbeanServer { } @Override - public DatabaseBuilder config() { + public DatabaseBuilder.Settings config() { return null; } diff --git a/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiServer.java b/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiServer.java index 301b2aa0f..6efedcacb 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiServer.java +++ b/ebean-test/src/test/java/io/ebean/xtest/internal/api/TDSpiServer.java @@ -579,7 +579,7 @@ public class TDSpiServer implements SpiServer { } @Override - public DatabaseBuilder config() { + public DatabaseBuilder.Settings config() { return null; } diff --git a/ebean-test/src/test/java/io/ebean/xtest/internal/server/text/json/DJsonScalarTest.java b/ebean-test/src/test/java/io/ebean/xtest/internal/server/text/json/DJsonScalarTest.java index 295bdcd4b..e39ee30db 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/internal/server/text/json/DJsonScalarTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/internal/server/text/json/DJsonScalarTest.java @@ -24,7 +24,7 @@ public class DJsonScalarTest { private final DJsonScalar jsonScalar; public DJsonScalarTest() { - DatabaseBuilder serverConfig = new DatabaseConfig(); + var serverConfig = new DatabaseConfig(); serverConfig.setDatabasePlatform(new H2Platform()); DefaultTypeManager typeManager = new DefaultTypeManager(serverConfig, new BootupClasses()); jsonScalar = new DJsonScalar(typeManager); diff --git a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java index cc18f4a95..a41255450 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java +++ b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java @@ -258,7 +258,7 @@ public class TestPersistenceContext extends BaseTestCase { @Test @Disabled void initDb() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2-batch"); config.loadFromProperties(); config.setDdlExtra(false); @@ -292,7 +292,7 @@ public class TestPersistenceContext extends BaseTestCase { @Test @Disabled void testFindEachFindList() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2-batch"); config.loadFromProperties(); config.setDdlRun(false); diff --git a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContextMany.java b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContextMany.java index 8fd251873..cf91280b7 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContextMany.java +++ b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContextMany.java @@ -98,7 +98,7 @@ public class TestPersistenceContextMany extends BaseTestCase { @Test @Disabled void initDb() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2-batch"); config.loadFromProperties(); config.setDdlExtra(false); @@ -142,7 +142,7 @@ public class TestPersistenceContextMany extends BaseTestCase { @Test @Disabled void testFindEachFindList() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2-batch"); config.loadFromProperties(); config.setDdlRun(false); diff --git a/ebean-test/src/test/java/org/tests/json/TestJsonSourceDefault.java b/ebean-test/src/test/java/org/tests/json/TestJsonSourceDefault.java index daaa7c70e..91d83fd14 100644 --- a/ebean-test/src/test/java/org/tests/json/TestJsonSourceDefault.java +++ b/ebean-test/src/test/java/org/tests/json/TestJsonSourceDefault.java @@ -23,7 +23,7 @@ class TestJsonSourceDefault { @ForPlatform(Platform.H2) @Disabled void testDirtyValues_diffSource() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.getDataSourceConfig() .setUsername("sa") .setPassword("") diff --git a/platforms/sqlserver/src/test/java/io/ebean/platform/sqlserver/SqlServerPlatformTest.java b/platforms/sqlserver/src/test/java/io/ebean/platform/sqlserver/SqlServerPlatformTest.java index 7277c226b..2726b575f 100644 --- a/platforms/sqlserver/src/test/java/io/ebean/platform/sqlserver/SqlServerPlatformTest.java +++ b/platforms/sqlserver/src/test/java/io/ebean/platform/sqlserver/SqlServerPlatformTest.java @@ -12,7 +12,7 @@ class SqlServerPlatformTest { @Test public void convertQuotedIdentifiers_when_allQuotedIdentifier_sqlServer() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setAllQuotedIdentifiers(true); config.setNamingConvention(new MatchingNamingConvention()); @@ -26,7 +26,7 @@ class SqlServerPlatformTest { @Test public void convertQuotedIdentifiers() { - DatabaseBuilder config = new DatabaseConfig(); + DatabaseConfig config = new DatabaseConfig(); SqlServer17Platform dbPlatform = new SqlServer17Platform(); dbPlatform.configure(config.getPlatformConfig());