From f2559f80ef640575c402f41fc29c8b1db6bfedbc Mon Sep 17 00:00:00 2001 From: rbygrave Date: Sat, 9 May 2015 01:30:38 +1200 Subject: [PATCH] #285 - ENH: support disable search classes config via ServerConfig.setDisableClasspathSearch(true) --- .../com/avaje/ebean/config/ServerConfig.java | 22 +++++++++++++++++++ .../server/core/DefaultContainer.java | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/avaje/ebean/config/ServerConfig.java b/src/main/java/com/avaje/ebean/config/ServerConfig.java index a338f1369..d6362251e 100644 --- a/src/main/java/com/avaje/ebean/config/ServerConfig.java +++ b/src/main/java/com/avaje/ebean/config/ServerConfig.java @@ -85,6 +85,11 @@ public class ServerConfig { */ private boolean defaultServer; + /** + * Set this to true to disable class path search. + */ + private boolean disableClasspathSearch; + /** * List of interesting classes such as entities, embedded, ScalarTypes, * Listeners, Finders, Controllers etc. @@ -1247,6 +1252,22 @@ public class ServerConfig { return ddlRun; } + /** + * Return true if the class path search should be disabled. + */ + public boolean isDisableClasspathSearch() { + return disableClasspathSearch; + } + + /** + * 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 EbeanServer instance just to use the + * SQL functions such as SqlQuery, SqlUpdate etc. + */ + public void setDisableClasspathSearch(boolean disableClasspathSearch) { + this.disableClasspathSearch = disableClasspathSearch; + } + /** * Programmatically add classes (typically entities) that this server should * use. @@ -1714,6 +1735,7 @@ public class ServerConfig { autoCommitMode = p.getBoolean("autoCommitMode", autoCommitMode); useJtaTransactionManager = p.getBoolean("useJtaTransactionManager", useJtaTransactionManager); + disableClasspathSearch = p.getBoolean("disableClasspathSearch", disableClasspathSearch); databasePlatform = createInstance(p, DatabasePlatform.class, "databasePlatform"); encryptKeyManager = createInstance(p, EncryptKeyManager.class, "encryptKeyManager"); encryptDeployManager = createInstance(p, EncryptDeployManager.class, "encryptDeployManager"); diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java index 29007dc17..086877737 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java @@ -249,7 +249,7 @@ public class DefaultContainer implements SpiContainer { private BootupClasses getBootupClasses1(ServerConfig serverConfig) { List> entityClasses = serverConfig.getClasses(); - if (entityClasses != null && entityClasses.size() > 0) { + if (serverConfig.isDisableClasspathSearch() || (entityClasses != null && entityClasses.size() > 0)) { // use classes we explicitly added via configuration return new BootupClasses(serverConfig.getClasses()); }