You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by lr...@apache.org on 2009/07/01 00:01:31 UTC
svn commit: r789976 - in /incubator/shindig/trunk/java/common/src:
main/java/org/apache/shindig/config/JsonContainerConfig.java
test/java/org/apache/shindig/config/JsonContainerConfigTest.java
Author: lryan
Date: Tue Jun 30 22:01:31 2009
New Revision: 789976
URL: http://svn.apache.org/viewvc?rev=789976&view=rev
Log:
Fix container config handling for JSON "null" literal.
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java?rev=789976&r1=789975&r2=789976&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java Tue Jun 30 22:01:31 2009
@@ -165,7 +165,9 @@
* Convert a JSON value to a configuration value.
*/
private static Object jsonToConfig(Object json, Expressions expressions, ELContext context) {
- if (json instanceof CharSequence) {
+ if (JSONObject.NULL.equals(json)) {
+ return null;
+ } else if (json instanceof CharSequence) {
return new DynamicConfigProperty(json.toString(), expressions, context);
} else if (json instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) json;
@@ -185,7 +187,10 @@
private static Map<String, Object> jsonToMap(JSONObject json, Expressions expressions, ELContext context) {
Map<String, Object> values = new HashMap<String, Object>(json.length(), 1);
for (String key : JSONObject.getNames(json)) {
- values.put(key, jsonToConfig(json.opt(key), expressions, context));
+ Object val = jsonToConfig(json.opt(key), expressions, context);
+ if (val != null) {
+ values.put(key, val);
+ }
}
return Collections.unmodifiableMap(values);
}
@@ -257,7 +262,7 @@
for (String field : fields) {
Object existing = clone.opt(field);
Object update = merge.get(field);
- if (existing == null || update == null) {
+ if (JSONObject.NULL.equals(existing) || JSONObject.NULL.equals(update)) {
// It's new custom config, not referenced in the prototype, or
// it's removing a pre-configured value.
clone.put(field, update);
Modified: incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java?rev=789976&r1=789975&r2=789976&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java (original)
+++ incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigTest.java Tue Jun 30 22:01:31 2009
@@ -207,4 +207,13 @@
assertEquals(TOP_LEVEL_VALUE, config.getString(CHILD_CONTAINER, "parentExpression"));
}
+
+ @Test
+ public void nullEntryEvaluation() throws Exception {
+ // We use a JSON Object here to guarantee that we're well formed up front.
+ JSONObject json = new JSONObject("{ 'gadgets.container' : ['default'], features : { osapi : null }}");
+ JsonContainerConfig config = new JsonContainerConfig(createContainer(json).getAbsolutePath(),
+ Expressions.forTesting());
+ assertNull(config.getMap("default", "features").get("osapi"));
+ }
}