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