You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/04/29 11:16:21 UTC

svn commit: r939239 - /shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java

Author: lindner
Date: Thu Apr 29 09:16:19 2010
New Revision: 939239

URL: http://svn.apache.org/viewvc?rev=939239&view=rev
Log:
inject gadgets.config() code from container.js into container jsservlet output

Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java?rev=939239&r1=939238&r2=939239&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java Thu Apr 29 09:16:19 2010
@@ -19,7 +19,9 @@ package org.apache.shindig.gadgets.servl
 
 import com.google.common.collect.ImmutableSet;
 
+import com.google.common.collect.Maps;
 import org.apache.commons.lang.StringUtils;
+import org.apache.shindig.common.JsonSerializer;
 import org.apache.shindig.common.servlet.HttpUtil;
 import org.apache.shindig.common.servlet.InjectedServlet;
 import org.apache.shindig.config.ContainerConfig;
@@ -34,6 +36,7 @@ import com.google.inject.Inject;
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Map;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
@@ -57,6 +60,12 @@ public class JsServlet extends InjectedS
     this.urlGenerator = urlGenerator;
   }
 
+  private ContainerConfig containerConfig;
+  @Inject
+  public void setContainerConfig(ContainerConfig containerConfig) {
+    this.containerConfig = containerConfig;
+  }
+
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
       throws IOException {
@@ -105,8 +114,8 @@ public class JsServlet extends InjectedS
         return container;
       }
     };
-    Collection<? extends FeatureResource> resources =
-        registry.getFeatureResources(ctx, needed, null);
+
+    Collection<? extends FeatureResource> resources = registry.getFeatureResources(ctx, needed, null);
     StringBuilder jsData = new StringBuilder();
     boolean isProxyCacheable = true;
     for (FeatureResource featureResource : resources) {
@@ -121,7 +130,24 @@ public class JsServlet extends InjectedS
       jsData.append(";\n");
     }
 
+    if (context == RenderingContext.CONTAINER) {
+      // Append some container specific things
 
+      Map<String, Object> features = containerConfig.getMap(ctx.getContainer(), "gadgets.features");
+      Map<String, Object> config = Maps.newHashMapWithExpectedSize(features == null ? 2 : features.size() + 2);
+
+      if (features != null) {
+        // Discard what we don't care about.
+        for (String name : needed) {
+          Object conf = features.get(name);
+          if (conf != null) {
+            config.put(name, conf);
+          }
+        }
+        jsData.append("gadgets.config.init(").append(JsonSerializer.serialize(config)).append(");\n");
+      }
+    }
+    
     if (jsData.length() == 0) {
       resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
       return;