Author: jtarrio
Date: Tue May  3 23:46:45 2011
New Revision: 1099297

URL: http://svn.apache.org/viewvc?rev=1099297&view=rev
Log:
Do not initialize gadgets.config if no matching features have configuration.

gadgets.config is now always initialized to an empty object, so it is not
necessary to do it every time. Therefore, skip initialization when the
configuration is empty.

Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessor.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessorTest.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessor.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessor.java?rev=1099297&r1=1099296&r2=1099297&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessor.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessor.java
 Tue May  3 23:46:45 2011
@@ -50,8 +50,7 @@ public class ConfigInjectionProcessor im
     this.configContributors = configContributors;
   }
 
-  public boolean process(JsRequest request, JsResponseBuilder builder)
-      throws JsException {
+  public boolean process(JsRequest request, JsResponseBuilder builder) {
     JsUri jsUri = request.getJsUri();
     GadgetContext ctx = new JsGadgetContext(jsUri);
 
@@ -78,8 +77,10 @@ public class ConfigInjectionProcessor im
             contributor.contribute(config, container, request.getHost());
           }
         }
-        builder.appendJs(
-            "gadgets.config.init(" + JsonSerializer.serialize(config) + 
");\n", CONFIG_INIT_ID);
+        if (!config.isEmpty()) {
+          builder.appendJs(
+              "gadgets.config.init(" + JsonSerializer.serialize(config) + 
");\n", CONFIG_INIT_ID);
+        }
       }
     }
     return true;

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessorTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessorTest.java?rev=1099297&r1=1099296&r2=1099297&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessorTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/ConfigInjectionProcessorTest.java
 Tue May  3 23:46:45 2011
@@ -96,6 +96,35 @@ public class ConfigInjectionProcessorTes
   }
   
   @Test
+  public void containerNoMatchingFeaturesDoesNothing() throws Exception {
+    checkNoMatchingFeaturesDoesNothing(RenderingContext.CONTAINER);
+  }
+
+  @Test
+  public void configuredNoMatchingFeaturesDoesNothing() throws Exception {
+    checkNoMatchingFeaturesDoesNothing(RenderingContext.CONFIGURED_GADGET);
+  }
+
+  private void checkNoMatchingFeaturesDoesNothing(RenderingContext ctx) throws 
Exception {
+    JsResponseBuilder builder = prepareRequestReturnBuilder(ctx );
+    Map<String, Object> baseConfig = Maps.newHashMap();
+    baseConfig.put("feature1", "config1");
+    Map<String, String> f2MapConfig = Maps.newHashMap();
+    f2MapConfig.put("key1", "val1");
+    f2MapConfig.put("key2", "val2");
+    baseConfig.put("feature2", f2MapConfig);
+    expect(containerConfig.getMap(CONTAINER, 
ConfigInjectionProcessor.GADGETS_FEATURES_KEY))
+        .andReturn(baseConfig);
+    List<String> libs = ImmutableList.of("lib1", "lib2");
+    expect(jsUri.getLibs()).andReturn(libs);
+    expect(registry.getFeatures(libs)).andReturn(libs);
+    control.replay();
+    assertTrue(processor.process(request, builder));
+    control.verify();
+    assertEquals(BASE_CODE, builder.build().toJsString());
+  }
+
+  @Test
   public void containerNoContributorsGetsBase() throws Exception {
     checkNoContributorsGetsBase(RenderingContext.CONTAINER);
   }


Reply via email to