diff --git a/src/main/groovy/io/kamax/mxisd/config/ForwardConfig.groovy b/src/main/groovy/io/kamax/mxisd/config/ForwardConfig.groovy index 40cf548..2134c3a 100644 --- a/src/main/groovy/io/kamax/mxisd/config/ForwardConfig.groovy +++ b/src/main/groovy/io/kamax/mxisd/config/ForwardConfig.groovy @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Configuration @ConfigurationProperties(prefix = "forward") class ForwardConfig { - private List servers + private List servers = new ArrayList<>() List getServers() { return servers diff --git a/src/main/groovy/io/kamax/mxisd/config/KeyConfig.groovy b/src/main/groovy/io/kamax/mxisd/config/KeyConfig.groovy index 19b3e9b..70e6fb1 100644 --- a/src/main/groovy/io/kamax/mxisd/config/KeyConfig.groovy +++ b/src/main/groovy/io/kamax/mxisd/config/KeyConfig.groovy @@ -20,6 +20,7 @@ package io.kamax.mxisd.config +import io.kamax.mxisd.exception.ConfigurationException import org.apache.commons.lang.StringUtils import org.springframework.beans.factory.InitializingBean import org.springframework.boot.context.properties.ConfigurationProperties @@ -42,7 +43,7 @@ class KeyConfig implements InitializingBean { @Override void afterPropertiesSet() throws Exception { if (StringUtils.isBlank(getPath())) { - throw new RuntimeException("Key path must be configured!") + throw new ConfigurationException("key.path") } } diff --git a/src/main/groovy/io/kamax/mxisd/config/RecursiveLookupBridgeConfig.groovy b/src/main/groovy/io/kamax/mxisd/config/RecursiveLookupBridgeConfig.groovy index 8c06956..a51e12f 100644 --- a/src/main/groovy/io/kamax/mxisd/config/RecursiveLookupBridgeConfig.groovy +++ b/src/main/groovy/io/kamax/mxisd/config/RecursiveLookupBridgeConfig.groovy @@ -15,7 +15,7 @@ class RecursiveLookupBridgeConfig implements InitializingBean { private boolean enabled private boolean recursiveOnly private String server - private Map mappings + private Map mappings = new HashMap<>() boolean getEnabled() { return enabled @@ -51,10 +51,13 @@ class RecursiveLookupBridgeConfig implements InitializingBean { @Override void afterPropertiesSet() throws Exception { + log.info("--- Bridge integration lookups config ---") log.info("Enabled: {}", getEnabled()) - log.info("Recursive only: {}", getRecursiveOnly()) - log.info("Server: {}", getServer()) - log.info("Mappings: {}", mappings.size()) + if (getEnabled()) { + log.info("Recursive only: {}", getRecursiveOnly()) + log.info("Fallback Server: {}", getServer()) + log.info("Mappings: {}", mappings.size()) + } } } diff --git a/src/main/groovy/io/kamax/mxisd/config/ServerConfig.groovy b/src/main/groovy/io/kamax/mxisd/config/ServerConfig.groovy index 800cc5a..3b14e96 100644 --- a/src/main/groovy/io/kamax/mxisd/config/ServerConfig.groovy +++ b/src/main/groovy/io/kamax/mxisd/config/ServerConfig.groovy @@ -20,6 +20,7 @@ package io.kamax.mxisd.config +import io.kamax.mxisd.exception.ConfigurationException import org.apache.commons.lang.StringUtils import org.springframework.beans.factory.InitializingBean import org.springframework.boot.context.properties.ConfigurationProperties @@ -42,7 +43,7 @@ class ServerConfig implements InitializingBean { @Override void afterPropertiesSet() throws Exception { if (StringUtils.isBlank(getName())) { - throw new RuntimeException("Server name must be configured. Use the same realm as your Homeserver") + throw new ConfigurationException("server.name") } } diff --git a/src/main/groovy/io/kamax/mxisd/exception/ConfigurationException.java b/src/main/groovy/io/kamax/mxisd/exception/ConfigurationException.java new file mode 100644 index 0000000..1481990 --- /dev/null +++ b/src/main/groovy/io/kamax/mxisd/exception/ConfigurationException.java @@ -0,0 +1,11 @@ +package io.kamax.mxisd.exception; + +public class ConfigurationException extends RuntimeException { + + private String key; + + public ConfigurationException(String key) { + super("Invalid or empty value for configuration key " + key); + } + +} diff --git a/src/main/groovy/io/kamax/mxisd/spring/ConfigurationFailureAnalyzer.java b/src/main/groovy/io/kamax/mxisd/spring/ConfigurationFailureAnalyzer.java new file mode 100644 index 0000000..b6a0087 --- /dev/null +++ b/src/main/groovy/io/kamax/mxisd/spring/ConfigurationFailureAnalyzer.java @@ -0,0 +1,14 @@ +package io.kamax.mxisd.spring; + +import io.kamax.mxisd.exception.ConfigurationException; +import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; +import org.springframework.boot.diagnostics.FailureAnalysis; + +public class ConfigurationFailureAnalyzer extends AbstractFailureAnalyzer { + + @Override + protected FailureAnalysis analyze(Throwable rootFailure, ConfigurationException cause) { + return new FailureAnalysis(cause.getMessage(), "Double check the key value", cause); + } + +} diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..ca5bb09 --- /dev/null +++ b/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.diagnostics.FailureAnalyzer=\ +io.kamax.mxisd.spring.ConfigurationFailureAnalyzer