You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by mh...@apache.org on 2010/12/10 02:03:38 UTC

svn commit: r1044187 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/ main/java/org/apache/shindig/gadgets/servlet/ main/java/org/apache/shindig/gadgets/uri/ test/java/org/apache/shindig/gadgets/uri/

Author: mhermanto
Date: Fri Dec 10 01:03:38 2010
New Revision: 1044187

URL: http://svn.apache.org/viewvc?rev=1044187&view=rev
Log:
Add support for configured gadget rendering context. http://codereview.appspot.com/3527043/

Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java?rev=1044187&r1=1044186&r2=1044187&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java Fri Dec 10 01:03:38 2010
@@ -21,10 +21,16 @@ package org.apache.shindig.gadgets;
  * Defines where the gadget is being rendered.
  */
 public enum RenderingContext {
-  // Used when rendering gadgets (iframes or inline).
+  // Used when rendering gadgets of type=html|inline. gadgets.config.init is not
+  // injected into the gadget render, and container mediated.
   // TODO: rename this to "RENDER_GADGET"?
   GADGET,
 
+  // Used when rendering gadgets of type=url. Unlike RenderingContext.GADGET,
+  // this special context is explicitly requested by the gadget (to include
+  // gadgets.config.init), while still considered a gadget render.
+  CONFIGURED_GADGET,
+
   // Used when rendering container data (not a gadget render)
   CONTAINER,
 

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java?rev=1044187&r1=1044186&r2=1044187&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java Fri Dec 10 01:03:38 2010
@@ -36,7 +36,7 @@ import com.google.inject.Singleton;
 /**
  * Provide processing logic for the JsServlet to serve the JavsScript as features request.
  * This class will allow separation of flow and serving logic for easy customization.
- * 
+ *
  */
 @Singleton
 public class JsHandler {
@@ -56,7 +56,7 @@ public class JsHandler {
 
   /**
    * Get the content of the feature resources and push it to jsData.
-   * 
+   *
    * @param req The HttpServletRequest object.
    * @param ctx GadgetContext object.
    * @param needed Set of requested feature names.
@@ -83,7 +83,7 @@ public class JsHandler {
       jsData.append(";\n");
     }
 
-    if (ctx.getRenderingContext() == RenderingContext.CONTAINER) {
+    if (ctx.getRenderingContext() != RenderingContext.GADGET) {
       // Append some container specific things
       Map<String, Object> features = containerConfig.getMap(container, "gadgets.features");
       Map<String, Object> config =
@@ -140,7 +140,7 @@ public class JsHandler {
       this.renderingContext = ctx.getContext();
       this.container = ctx.getContainer();
     }
-    
+
     @Override
     public RenderingContext getRenderingContext() {
       return renderingContext;

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java?rev=1044187&r1=1044186&r2=1044187&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java Fri Dec 10 01:03:38 2010
@@ -58,8 +58,10 @@ public interface JsUriManager {
     public JsUri(UriStatus status, Uri origUri, Collection<String> libs) {
       super(status, origUri);
       if (origUri != null) {
-        this.context = "1".equals(origUri.getQueryParameter(Param.CONTAINER_MODE.getKey())) ?
-            RenderingContext.CONTAINER : RenderingContext.GADGET;
+        String param = origUri.getQueryParameter(Param.CONTAINER_MODE.getKey());
+        if ("1".equals(param)) context = RenderingContext.CONTAINER;
+        else if ("2".equals(param)) context = RenderingContext.CONFIGURED_GADGET;
+        else context = RenderingContext.GADGET;
         this.jsload = "1".equals(origUri.getQueryParameter(Param.JSLOAD.getKey()));
         this.onload = origUri.getQueryParameter(Param.ONLOAD.getKey());
       } else {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java?rev=1044187&r1=1044186&r2=1044187&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java Fri Dec 10 01:03:38 2010
@@ -18,9 +18,12 @@
  */
 package org.apache.shindig.gadgets.uri;
 
-import com.google.caja.util.Lists;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
-import junit.framework.TestCase;
+import com.google.caja.util.Lists;
 
 import org.apache.shindig.common.uri.UriBuilder;
 import org.apache.shindig.config.ContainerConfig;
@@ -31,24 +34,15 @@ import org.junit.Test;
 import java.util.Collections;
 import java.util.List;
 
-public class JsUriManagerTest extends TestCase {
+public class JsUriManagerTest extends UriManagerTestBase {
   private static final UriStatus STATUS = UriStatus.VALID_UNVERSIONED;
   private static final List<String> LIBS = Lists.newArrayList("feat1", "feat2");
   private static final String CONTAINER_VALUE = "ig";
   private static final String ONLOAD_VALUE = "ol";
 
   @Test
-  public void testJsUriNormal() throws Exception {
-    UriBuilder builder = new UriBuilder();
-    builder.setScheme("http");
-    builder.setAuthority("localohst");
-    builder.setPath("/gadgets/js/feature.js");
-    builder.addQueryParameter(Param.CONTAINER.getKey(), CONTAINER_VALUE);
-    builder.addQueryParameter(Param.CONTAINER_MODE.getKey(), "1");
-    builder.addQueryParameter(Param.JSLOAD.getKey(), "1");
-    builder.addQueryParameter(Param.NO_CACHE.getKey(), "1");
-    builder.addQueryParameter(Param.ONLOAD.getKey(), ONLOAD_VALUE);
-
+  public void newJsUriWithOriginalUri() throws Exception {
+    UriBuilder builder = newTestUriBuilder("1"); // container context
     JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, builder.toUri(), LIBS);
     assertEquals(RenderingContext.CONTAINER, jsUri.getContext());
     assertEquals(CONTAINER_VALUE, jsUri.getContainer());
@@ -59,14 +53,39 @@ public class JsUriManagerTest extends Te
   }
 
   @Test
-  public void testJsUriNullUri() throws Exception {
+  public void newJsUriWithConfiguredGadgetContext() throws Exception {
+    UriBuilder builder = newTestUriBuilder("2"); // configured gadget context
+    JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, builder.toUri(), LIBS);
+    assertEquals(RenderingContext.CONFIGURED_GADGET, jsUri.getContext());
+    assertEquals(CONTAINER_VALUE, jsUri.getContainer());
+    assertTrue(jsUri.isJsload());
+    assertTrue(jsUri.isNoCache());
+    assertEquals(ONLOAD_VALUE, jsUri.getOnload());
+    assertEquals(LIBS, Lists.newArrayList(jsUri.getLibs()));
+  }
+
+  @Test
+  public void newJsUriWithEmptyOriginalUri() throws Exception {
     JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, null,
         Collections.<String>emptyList()); // Null URI.
     assertEquals(RenderingContext.GADGET, jsUri.getContext());
     assertEquals(ContainerConfig.DEFAULT_CONTAINER, jsUri.getContainer());
     assertFalse(jsUri.isJsload());
     assertFalse(jsUri.isNoCache());
-    assertNull(ONLOAD_VALUE, jsUri.getOnload());
+    assertNull(jsUri.getOnload());
     assertTrue(jsUri.getLibs().isEmpty());
   }
+
+  private UriBuilder newTestUriBuilder(String containerMode) {
+    UriBuilder builder = new UriBuilder();
+    builder.setScheme("http");
+    builder.setAuthority("localohst");
+    builder.setPath("/gadgets/js/feature.js");
+    builder.addQueryParameter(Param.CONTAINER.getKey(), CONTAINER_VALUE);
+    builder.addQueryParameter(Param.CONTAINER_MODE.getKey(), containerMode);
+    builder.addQueryParameter(Param.JSLOAD.getKey(), "1");
+    builder.addQueryParameter(Param.NO_CACHE.getKey(), "1");
+    builder.addQueryParameter(Param.ONLOAD.getKey(), ONLOAD_VALUE);
+    return builder;
+  }
 }