You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/11/18 22:43:53 UTC

svn commit: r1036645 - in /shindig/trunk/java/common/src: main/java/org/apache/shindig/config/ test/java/org/apache/shindig/config/

Author: johnh
Date: Thu Nov 18 21:43:53 2010
New Revision: 1036645

URL: http://svn.apache.org/viewvc?rev=1036645&view=rev
Log:
Fix ContainerConfig nullification logic.


Modified:
    shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/config/BasicContainerConfigTest.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigLoaderTest.java

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java?rev=1036645&r1=1036644&r2=1036645&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java Thu Nov 18 21:43:53 2010
@@ -255,7 +255,8 @@ public class BasicContainerConfig implem
      *   'base': '/gadgets/foo',
      *   'user': 'anne',
      *   'colour': 'green',
-     *   'map': { 'latitude': 42, 'longitude': 130 } }
+     *   'map': { 'latitude': 42, 'longitude': 130 },
+     *   'data': null }
      *
      * @return The container merged with all parents.
      * @throws ContainerConfigException If there is an invalid parent parameter
@@ -301,11 +302,7 @@ public class BasicContainerConfig implem
               (Map<String, Object>) fromParents, (Map<String, Object>) fromContainer));
         } else {
           // Otherwise we just overwrite it.
-          if (fromContainer == null) {
-            clone.remove(field);
-          } else {
-            clone.put(field, fromContainer);
-          }
+          clone.put(field, fromContainer);
         }
       }
       return clone;

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/config/BasicContainerConfigTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/BasicContainerConfigTest.java?rev=1036645&r1=1036644&r2=1036645&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/config/BasicContainerConfigTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/config/BasicContainerConfigTest.java Thu Nov 18 21:43:53 2010
@@ -136,10 +136,24 @@ public class BasicContainerConfigTest {
         "base", "/gadgets/foo",
         "user", "anne",
         "colour", "green",
-        "map", ImmutableMap.of("latitude", 42, "longitude", 130));
+        "map", ImmutableMap.of("latitude", 42, "longitude", 130),
+        "data", null);
     config.newTransaction().addContainer(defaultContainer).addContainer(newContainer).commit();
     assertEquals(expectedContainer, config.getProperties("new"));
   }
+  
+  @Test
+  public void testNulledPropertiesRemainNulledAfterSeveralTransactions() throws Exception {
+    Map<String, Object> defaultContainer = makeContainer("default", "o1", "v1", "o2", "v2", "o3", "v3"); 
+    Map<String, Object> parentContainer = makeContainer("parent", "o3", null); 
+    Map<String, Object> childContainer = makeContainer("child", "parent", "parent", "o2", null);
+    config.newTransaction().addContainer(defaultContainer).commit();
+    config.newTransaction().addContainer(parentContainer).commit();
+    config.newTransaction().addContainer(childContainer).commit();
+    assertNull(config.getProperty("child", "o2"));
+    assertNull(config.getProperty("child", "o3"));
+    assertNull(config.getProperty("parent", "o3"));
+  }
 
   @Test
   public void testAddNewContainer() throws Exception {

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigLoaderTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigLoaderTest.java?rev=1036645&r1=1036644&r2=1036645&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigLoaderTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/config/JsonContainerConfigLoaderTest.java Thu Nov 18 21:43:53 2010
@@ -260,9 +260,12 @@ public class JsonContainerConfigLoaderTe
     // We use JSON Objects here to guarantee that we're well formed up front.
     JSONObject parent = new JSONObject("{ 'gadgets.container' : ['default'], features : { osapi : 'foo' }}");    
     JSONObject child = new JSONObject("{ 'gadgets.container' : ['child'], features : null}");    
+    JSONObject grand = new JSONObject("{ 'gadgets.container' : ['grand'], parent : 'child'}");    
     createConfigForTest(createContainer(parent).getAbsolutePath());
     createConfigForTest(createContainer(child).getAbsolutePath());
+    createConfigForTest(createContainer(grand).getAbsolutePath());
     assertEquals("foo", config.getMap("default", "features").get("osapi"));
     assertNull(config.getProperty("child", "features"));
+    assertNull(config.getProperty("grand", "features"));
   }
 }