# HG changeset patch # User Severin Gehwolf # Date 1504622810 -7200 # Node ID 1bcd159ffaf7ad12d14ee8f4a61a123bf516cbdd # Parent 42f6d962eb8f298ce250a3ed9febe29d5cc5ba7f Add diagnostic hints for keycloak config errors. Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-September/024831.html diff -r 42f6d962eb8f -r 1bcd159ffaf7 common/core/src/main/java/com/redhat/thermostat/gateway/common/core/config/BasicConfiguration.java --- a/common/core/src/main/java/com/redhat/thermostat/gateway/common/core/config/BasicConfiguration.java Fri Sep 01 13:08:57 2017 -0400 +++ b/common/core/src/main/java/com/redhat/thermostat/gateway/common/core/config/BasicConfiguration.java Tue Sep 05 16:46:50 2017 +0200 @@ -41,6 +41,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; @@ -98,8 +99,9 @@ try { replaceValue = new String(Files.readAllBytes(Paths.get(basePath, value))); config.put(replaceKey, replaceValue); - } catch (FileNotFoundException e) { - // ignore + } catch (FileNotFoundException|NoSuchFileException e) { + logger.log(Level.FINE, "Config file for property '" + replaceKey + "' not found: " + e.getMessage()); + config.put(replaceKey, "FILE_NOT_FOUND: " + value); } catch (IOException e) { logger.log(Level.FINE, "Error reading properties file", e); } diff -r 42f6d962eb8f -r 1bcd159ffaf7 server/src/main/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationFactory.java --- a/server/src/main/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationFactory.java Fri Sep 01 13:08:57 2017 -0400 +++ b/server/src/main/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationFactory.java Tue Sep 05 16:46:50 2017 +0200 @@ -40,8 +40,12 @@ import com.google.gson.JsonSyntaxException; public class KeycloakConfigurationFactory { - public KeycloakConfiguration createKeycloakConfiguration(String keycloakJson) throws JsonSyntaxException{ - Gson gson = new Gson(); - return gson.fromJson(keycloakJson, KeycloakConfiguration.class); + public KeycloakConfiguration createKeycloakConfiguration(String keycloakJson) { + try { + Gson gson = new Gson(); + return gson.fromJson(keycloakJson, KeycloakConfiguration.class); + } catch (JsonSyntaxException e) { + throw new IllegalArgumentException("Failed to parse Keycloak JSON config: " + keycloakJson, e); + } } } diff -r 42f6d962eb8f -r 1bcd159ffaf7 server/src/main/java/com/redhat/thermostat/gateway/server/services/WebArchiveCoreService.java --- a/server/src/main/java/com/redhat/thermostat/gateway/server/services/WebArchiveCoreService.java Fri Sep 01 13:08:57 2017 -0400 +++ b/server/src/main/java/com/redhat/thermostat/gateway/server/services/WebArchiveCoreService.java Tue Sep 05 16:46:50 2017 +0200 @@ -143,6 +143,9 @@ private void setupKeycloakAuthForContext(WebAppContext webAppContext) { String keycloakConfig = (String) serviceConfig.asMap().get(ServiceConfiguration.ConfigurationKey.KEYCLOAK_CONFIG.name()); + if (keycloakConfig == null) { + throw new IllegalStateException("KEYCLOAK_CONFIG file not specified in configuration!"); + } KeycloakConfiguration keycloakConfiguration = new KeycloakConfigurationFactory().createKeycloakConfiguration(keycloakConfig); String realm = keycloakConfiguration.getRealm(); diff -r 42f6d962eb8f -r 1bcd159ffaf7 server/src/test/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationTest.java --- a/server/src/test/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationTest.java Fri Sep 01 13:08:57 2017 -0400 +++ b/server/src/test/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationTest.java Tue Sep 05 16:46:50 2017 +0200 @@ -40,8 +40,6 @@ import org.junit.Test; -import com.google.gson.JsonSyntaxException; - public class KeycloakConfigurationTest { private static final String expectedKeycloakJson = "{\n" + @@ -65,7 +63,7 @@ keycloakFactory.createKeycloakConfiguration(expectedKeycloakJson); } - @Test(expected = JsonSyntaxException.class) + @Test(expected = IllegalArgumentException.class) public void testInvalidJson() { keycloakFactory.createKeycloakConfiguration("{\"}"); }