Author: lindner
Date: Fri Aug 27 13:07:42 2010
New Revision: 990135

URL: http://svn.apache.org/viewvc?rev=990135&view=rev
Log:
Patch from Gagandeep Singh | Modifying JsonContainerConfig to add SERVER_HOST 
and SERVER_PORT env. to all containers

Modified:
    
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
    
shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java

Modified: 
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java?rev=990135&r1=990134&r2=990135&view=diff
==============================================================================
--- 
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
 (original)
+++ 
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
 Fri Aug 27 13:07:42 2010
@@ -19,11 +19,6 @@
 
 package org.apache.shindig.config;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.shindig.common.JsonSerializer;
-import org.apache.shindig.common.util.ResourceLoader;
-import org.apache.shindig.expressions.Expressions;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
@@ -31,6 +26,10 @@ import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 
+import org.apache.commons.lang.StringUtils;
+import org.apache.shindig.common.JsonSerializer;
+import org.apache.shindig.common.util.ResourceLoader;
+import org.apache.shindig.expressions.Expressions;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -44,12 +43,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.logging.Logger;
 import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.util.regex.Pattern;
 
 import javax.annotation.Nullable;
-
 import javax.el.ELContext;
 import javax.el.ELException;
 import javax.el.ValueExpression;
@@ -72,12 +70,17 @@ public class JsonContainerConfig extends
   public static final String PARENT_KEY = "parent";
   // TODO: Rename this to simply "container", gadgets.container is unnecessary.
   public static final String CONTAINER_KEY = "gadgets.container";
+  public static final String SERVER_PORT = "SERVER_PORT";
+  public static final String SERVER_HOST = "SERVER_HOST";
 
   private final Map<String, Map<String, Object>> config;
   private final Expressions expressions;
 
   private static final Pattern CRLF_PATTERN = Pattern.compile("[\r\n]+");
 
+  private final String host;
+  private final String port;
+
   // Used by tests
   public JsonContainerConfig(String containers, Expressions expressions) 
throws ContainerConfigException {
     this(containers, "localhost", "8080", expressions);
@@ -93,13 +96,10 @@ public class JsonContainerConfig extends
                              Expressions expressions)
       throws ContainerConfigException {
     this.expressions = expressions;
+    this.host = host;
+    this.port = port;
+
     JSONObject configJson = loadContainers(containers);
-    try {
-      
configJson.getJSONObject(ContainerConfig.DEFAULT_CONTAINER).put("SERVER_PORT", 
port);
-      
configJson.getJSONObject(ContainerConfig.DEFAULT_CONTAINER).put("SERVER_HOST", 
host);
-    } catch (JSONException e) {
-      // ignore
-    }
     config = createContainers(configJson);
     init();
   }
@@ -109,6 +109,8 @@ public class JsonContainerConfig extends
    */
   public JsonContainerConfig(JSONObject json, Expressions expressions) {
     this.expressions = expressions;
+    host = null;
+    port = null;
     config = createContainers(json);
     init();
   }
@@ -375,6 +377,15 @@ public class JsonContainerConfig extends
         }
       }
 
+      // Add {...@code SERVER_HOST} and {...@code SERVER_PORT} environment to 
default
+      // container.
+      try {
+        all.getJSONObject(DEFAULT_CONTAINER).put(SERVER_PORT, port);
+        all.getJSONObject(DEFAULT_CONTAINER).put(SERVER_HOST, host);
+      } catch (JSONException e) {
+        // ignore
+      }
+
       // Now that all containers are loaded, we go back through them and merge
       // recursively. This is done at startup to simplify lookups.
       for (String container : JSONObject.getNames(all)) {

Modified: 
shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java?rev=990135&r1=990134&r2=990135&view=diff
==============================================================================
--- 
shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
 (original)
+++ 
shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
 Fri Aug 27 13:07:42 2010
@@ -19,12 +19,6 @@
 
 package org.apache.shindig.config;
 
-import static org.apache.shindig.config.ContainerConfig.DEFAULT_CONTAINER;
-import static org.apache.shindig.config.JsonContainerConfig.CONTAINER_KEY;
-import static org.apache.shindig.config.JsonContainerConfig.PARENT_KEY;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
 import org.apache.shindig.expressions.Expressions;
 import org.json.JSONObject;
 import org.junit.Test;
@@ -37,6 +31,12 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
+import static org.apache.shindig.config.ContainerConfig.DEFAULT_CONTAINER;
+import static org.apache.shindig.config.JsonContainerConfig.CONTAINER_KEY;
+import static org.apache.shindig.config.JsonContainerConfig.PARENT_KEY;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
 public class JsonContainerConfigTest {
 
   private static final String TOP_LEVEL_NAME = "Top level name";
@@ -199,10 +199,27 @@ public class JsonContainerConfigTest {
     json.put(CONTAINER_KEY, new String[]{DEFAULT_CONTAINER});
     json.put("expression", "port=${SERVER_PORT}");
 
-    ContainerConfig config = new 
JsonContainerConfig(createContainer(json).getAbsolutePath(), 
Expressions.forTesting());
+    ContainerConfig config = new 
JsonContainerConfig(createContainer(json).getAbsolutePath(),
+        Expressions.forTesting());
 
     assertEquals("port=8080", config.getString(DEFAULT_CONTAINER, 
"expression"));
+  }
+
+  @Test
+  public void testCommonEnvironmentAddedToAllContainers() throws Exception {
+    // We use a JSON Object here to guarantee that we're well formed up front.
+    JSONObject json = new JSONObject();
+    json.put(CONTAINER_KEY, new String[]{DEFAULT_CONTAINER, "testContainer"});
+    json.put("port", "${SERVER_PORT}");
+    json.put("host", "${SERVER_HOST}");
+
+    ContainerConfig config = new 
JsonContainerConfig(createContainer(json).getAbsolutePath(),
+        Expressions.forTesting());
 
+    assertEquals("8080", config.getString(DEFAULT_CONTAINER, "port"));
+    assertEquals("8080", config.getString("testContainer", "port"));
+    assertEquals("localhost", config.getString(DEFAULT_CONTAINER, "host"));
+    assertEquals("localhost", config.getString("testContainer", "host"));
   }
 
   @Test


Reply via email to