changeset 245:1bcd159ffaf7

Add diagnostic hints for keycloak config errors. Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-September/024831.html
author Severin Gehwolf <sgehwolf@redhat.com>
date Tue, 05 Sep 2017 16:46:50 +0200
parents 42f6d962eb8f
children 7499f1b499c1
files common/core/src/main/java/com/redhat/thermostat/gateway/common/core/config/BasicConfiguration.java server/src/main/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationFactory.java server/src/main/java/com/redhat/thermostat/gateway/server/services/WebArchiveCoreService.java server/src/test/java/com/redhat/thermostat/gateway/server/auth/keycloak/KeycloakConfigurationTest.java
diffstat 4 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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);
                 }
--- 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);
+        }
     }
 }
--- 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();
 
--- 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("{\"}");
     }