From d0b24dc3404fb917b85f60b6da0cc09dbe399142 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 9 Mar 2018 00:44:04 +1300 Subject: [PATCH] #1343 - Update the #1283 ENH: Support simplified test configuration (with docker setup typically via application-test.yml) --- src/main/java/io/ebean/config/AutoConfigure.java | 11 +++++++---- src/main/java/io/ebean/config/ServerConfig.java | 15 ++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/ebean/config/AutoConfigure.java b/src/main/java/io/ebean/config/AutoConfigure.java index 5c0ef18af..879338ce5 100644 --- a/src/main/java/io/ebean/config/AutoConfigure.java +++ b/src/main/java/io/ebean/config/AutoConfigure.java @@ -6,10 +6,13 @@ package io.ebean.config; public interface AutoConfigure { /** - * Provide some configuration the ServerConfig prior to server creation. - *

- * Return true if the autoConfiguration applies to this ServerConfig. + * Perform configuration for the ServerConfig prior to properties load. */ - void configure(ServerConfig serverConfig); + void preConfigure(ServerConfig serverConfig); + + /** + * Provide some configuration the ServerConfig prior to server creation but after properties have been applied. + */ + void postConfigure(ServerConfig serverConfig); } diff --git a/src/main/java/io/ebean/config/ServerConfig.java b/src/main/java/io/ebean/config/ServerConfig.java index f4b59039c..28728cd22 100644 --- a/src/main/java/io/ebean/config/ServerConfig.java +++ b/src/main/java/io/ebean/config/ServerConfig.java @@ -2650,19 +2650,24 @@ public class ServerConfig { * Load the settings from the given properties */ private void configureFromProperties() { - autoConfiguration(); - PropertiesWrapper p = new PropertiesWrapper("ebean", name, properties, classLoadConfig); - loadSettings(p); + List autoConfigures = autoConfiguration(); + loadSettings(new PropertiesWrapper("ebean", name, properties, classLoadConfig)); + for (AutoConfigure autoConfigure : autoConfigures) { + autoConfigure.postConfigure(this); + } } /** * Use a 'plugin' to provide automatic configuration. Intended for automatic testing * configuration with Docker containers via ebean-test-config. */ - private void autoConfiguration() { + private List autoConfiguration() { + List list = new ArrayList<>(); for (AutoConfigure autoConfigure : serviceLoad(AutoConfigure.class)) { - autoConfigure.configure(this); + autoConfigure.preConfigure(this); + list.add(autoConfigure); } + return list; } /**