keycloak-uncached

Merge pull request #1241 from stianst/1.2.0 KEYCLOAK-1289

5/11/2015 6:03:47 AM

Details

diff --git a/core/src/main/java/org/keycloak/util/SystemEnvProperties.java b/core/src/main/java/org/keycloak/util/SystemEnvProperties.java
new file mode 100644
index 0000000..1e54b52
--- /dev/null
+++ b/core/src/main/java/org/keycloak/util/SystemEnvProperties.java
@@ -0,0 +1,25 @@
+package org.keycloak.util;
+
+import java.util.Properties;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class SystemEnvProperties extends Properties {
+
+    @Override
+    public String getProperty(String key) {
+        if (key.startsWith("env.")) {
+            return System.getenv().get(key.substring(4));
+        } else {
+            return System.getProperty(key);
+        }
+    }
+
+    @Override
+    public String getProperty(String key, String defaultValue) {
+        String value = getProperty(key);
+        return value != null ? value : defaultValue;
+    }
+
+}
diff --git a/core/src/main/java/org/keycloak/util/SystemPropertiesJsonParserFactory.java b/core/src/main/java/org/keycloak/util/SystemPropertiesJsonParserFactory.java
index 52f893d..a09a91b 100644
--- a/core/src/main/java/org/keycloak/util/SystemPropertiesJsonParserFactory.java
+++ b/core/src/main/java/org/keycloak/util/SystemPropertiesJsonParserFactory.java
@@ -3,6 +3,8 @@ package org.keycloak.util;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
+import java.util.Map;
+import java.util.Properties;
 
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jackson.io.IOContext;
@@ -16,6 +18,8 @@ import org.codehaus.jackson.util.JsonParserDelegate;
  */
 public class SystemPropertiesJsonParserFactory extends MappingJsonFactory {
 
+    private static final Properties properties = new SystemEnvProperties();
+
     @Override
     protected JsonParser _createJsonParser(byte[] data, int offset, int len, IOContext ctxt) throws IOException {
         JsonParser delegate = super._createJsonParser(data, offset, len, ctxt);
@@ -34,8 +38,6 @@ public class SystemPropertiesJsonParserFactory extends MappingJsonFactory {
         return new SystemPropertiesAwareJsonParser(delegate);
     }
 
-
-
     public static class SystemPropertiesAwareJsonParser extends JsonParserDelegate {
 
         public SystemPropertiesAwareJsonParser(JsonParser d) {
@@ -45,7 +47,7 @@ public class SystemPropertiesJsonParserFactory extends MappingJsonFactory {
         @Override
         public String getText() throws IOException {
             String orig = super.getText();
-            return StringPropertyReplacer.replaceProperties(orig);
+            return StringPropertyReplacer.replaceProperties(orig, properties);
         }
     }
 }
diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
index d3586bc..b0f02ad 100755
--- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
+++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
@@ -25,6 +25,7 @@ import org.keycloak.services.scheduled.ScheduledTaskRunner;
 import org.keycloak.services.util.JsonConfigProvider;
 import org.keycloak.timer.TimerProvider;
 import org.keycloak.util.JsonSerialization;
+import org.keycloak.util.SystemEnvProperties;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.core.Application;
@@ -139,14 +140,8 @@ public class KeycloakApplication extends Application {
             }
 
             if (node != null) {
-                Properties properties = new Properties();
-                properties.putAll(System.getProperties());
-                for(Map.Entry<String, String> e : System.getenv().entrySet()) {
-                    properties.put("env." + e.getKey(), e.getValue());
-                }
-
+                Properties properties = new SystemEnvProperties();
                 Config.init(new JsonConfigProvider(node, properties));
-
                 return;
             } else {
                 log.warn("Config 'keycloak-server.json' not found");