From 6534feb5dab2e9663b7ea512a8a508011c1ef9ca Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Mon, 26 Mar 2018 16:55:25 +1300 Subject: [PATCH] #1350 - ENH: Add mappingsLocation config to search xml mapping files. Minor adjustments - read "mappingLocations" only etc. --- .../java/io/ebean/config/ServerConfig.java | 35 ++++++++++++------- .../io/ebean/config/ServerConfigTest.java | 3 ++ src/test/resources/ebean.properties | 2 +- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/java/io/ebean/config/ServerConfig.java b/src/main/java/io/ebean/config/ServerConfig.java index 8d0d6f797..c0b8a5ffe 100644 --- a/src/main/java/io/ebean/config/ServerConfig.java +++ b/src/main/java/io/ebean/config/ServerConfig.java @@ -14,7 +14,14 @@ import io.ebean.config.dbplatform.DbEncrypt; import io.ebean.config.dbplatform.DbType; import io.ebean.config.dbplatform.IdType; import io.ebean.config.properties.PropertiesLoader; -import io.ebean.event.*; +import io.ebean.event.BeanFindController; +import io.ebean.event.BeanPersistController; +import io.ebean.event.BeanPersistListener; +import io.ebean.event.BeanPostConstructListener; +import io.ebean.event.BeanPostLoad; +import io.ebean.event.BeanQueryAdapter; +import io.ebean.event.BulkTableEventListener; +import io.ebean.event.ServerConfigStartup; import io.ebean.event.changelog.ChangeLogListener; import io.ebean.event.changelog.ChangeLogPrepare; import io.ebean.event.changelog.ChangeLogRegister; @@ -26,7 +33,14 @@ import io.ebean.util.StringHelper; import org.avaje.datasource.DataSourceConfig; import javax.sql.DataSource; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.ServiceLoader; /** * The configuration used for creating a EbeanServer. @@ -2772,10 +2786,8 @@ public class ServerConfig { dbOffline = p.getBoolean("dbOffline", dbOffline); serverCachePlugin = p.createInstance(ServerCachePlugin.class, "serverCachePlugin", serverCachePlugin); - if (packages != null) { - String packagesProp = p.get("search.packages", p.get("packages", null)); - packages = getSearchList(packagesProp); - } + String packagesProp = p.get("search.packages", p.get("packages", null)); + packages = getSearchList(packagesProp, packages); collectQueryStatsByNode = p.getBoolean("collectQueryStatsByNode", collectQueryStatsByNode); collectQueryOrigins = p.getBoolean("collectQueryOrigins", collectQueryOrigins); @@ -2855,11 +2867,8 @@ public class ServerConfig { tenantPartitionColumn = p.get("tenant.partitionColumn", tenantPartitionColumn); classes = getClasses(p); - - if (mappingLocations != null) { - String mappingsProp = p.get("search.mappingsLocations", p.get("mappingsLocations", null)); - mappingLocations = getSearchList(mappingsProp); - } + String mappingsProp = p.get("mappingLocations", null); + mappingLocations = getSearchList(mappingsProp, mappingLocations); } private NamingConvention createNamingConvention(PropertiesWrapper properties, NamingConvention namingConvention) { @@ -2896,7 +2905,7 @@ public class ServerConfig { return classes; } - private List getSearchList(String searchNames) { + private List getSearchList(String searchNames, List defaultValue) { if (searchNames != null) { String[] entries = StringHelper.splitNames(searchNames); @@ -2906,7 +2915,7 @@ public class ServerConfig { return hitList; } else { - return new ArrayList<>(); + return defaultValue; } } diff --git a/src/test/java/io/ebean/config/ServerConfigTest.java b/src/test/java/io/ebean/config/ServerConfigTest.java index 6aa9f64c9..03c86481d 100644 --- a/src/test/java/io/ebean/config/ServerConfigTest.java +++ b/src/test/java/io/ebean/config/ServerConfigTest.java @@ -64,6 +64,7 @@ public class ServerConfigTest { props.setProperty("disableL2Cache", "true"); props.setProperty("notifyL2CacheInForeground", "true"); props.setProperty("idType", "SEQUENCE"); + props.setProperty("mappingLocations", "classpath:/foo;bar"); serverConfig.loadFromProperties(props); @@ -83,6 +84,8 @@ public class ServerConfigTest { assertEquals(4, serverConfig.getBackgroundExecutorSchedulePoolSize()); assertEquals(98, serverConfig.getBackgroundExecutorShutdownSecs()); + assertThat(serverConfig.getMappingLocations()).containsExactly("classpath:/foo","bar"); + serverConfig.setPersistBatch(PersistBatch.NONE); serverConfig.setPersistBatchOnCascade(PersistBatch.NONE); diff --git a/src/test/resources/ebean.properties b/src/test/resources/ebean.properties index 3616698d1..33121aa37 100644 --- a/src/test/resources/ebean.properties +++ b/src/test/resources/ebean.properties @@ -27,6 +27,7 @@ ebean.autoReadOnlyDataSource=true #ebean.h2.idType=SEQUENCE +ebean.mappingLocations=classpath:/ebean-xml-mappings ebean.currentUserProvider=io.ebean.MyCurrentUserProvider #ebean.expressionNativeIlike=true #ebean.jsonInclude=NON_NULL @@ -169,4 +170,3 @@ ebean.migrationtest.migration.appName=migrationtest ebean.migrationtest.migration.migrationPath=dbmigration/migrationtest ebean.migrationtest.migration.strict=true -ebean.mappingsLocations=classpath:/ebean-xml-mappings