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/07/10 02:17:23 UTC

svn commit: r962728 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java main/java/org/apache/shindig/gadgets/uri/UriCommon.java test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java

Author: johnh
Date: Sat Jul 10 00:17:23 2010
New Revision: 962728

URL: http://svn.apache.org/viewvc?rev=962728&view=rev
Log:
Make DefaultJsUriManager's parsing more lenient, and support adding &c=1 for container context.


Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java?rev=962728&r1=962727&r2=962728&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java Sat Jul 10 00:17:23 2010
@@ -27,6 +27,7 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.config.ContainerConfig;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.RenderingContext;
 import org.apache.shindig.gadgets.GadgetException.Code;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.uri.UriCommon.Param;
@@ -81,6 +82,9 @@ public class DefaultJsUriManager impleme
     // Pass through debug param for debugging use.
     uri.addQueryParameter(Param.DEBUG.getKey(),
         gadget.getContext().getDebug() ? "1" : "0");
+    
+    uri.addQueryParameter(Param.CONTAINER_MODE.getKey(),
+        gadget.getContext().getRenderingContext() == RenderingContext.CONTAINER ? "1" : "0");
 
     // Pass through gadget Uri
     if (addGadgetUri()) {
@@ -127,14 +131,13 @@ public class DefaultJsUriManager impleme
       issueUriFormatError("Js Uri path invalid, expected prefix: " + jsPrefix + ", is: " + path);
       return INVALID_URI;
     }
-    if (!path.endsWith(JS_SUFFIX)) {
-      issueUriFormatError("Js Uri path invalid, expected suffix: " + JS_SUFFIX + ", is: " + path);
-      return INVALID_URI;
-    }
-
-    // Pull off prefix and suffix strings
     path = path.substring(jsPrefix.length());
-    path = path.substring(0, path.length() - JS_SUFFIX.length());
+    
+    // Convenience suffix: pull off .js if present; leave alone otherwise.
+    if (path.endsWith(JS_SUFFIX)) {
+      path = path.substring(0, path.length() - JS_SUFFIX.length());
+    }
+    
     while (path.startsWith("/")) {
       path = path.substring(1);
     }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java?rev=962728&r1=962727&r2=962728&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java Sat Jul 10 00:17:23 2010
@@ -39,6 +39,7 @@ public interface UriCommon {
     TYPE("type"),
     REWRITE_MIME_TYPE("rewriteMime"),
     SANITIZE("sanitize"),
+    CONTAINER_MODE("c"),
     
     // Proxy resize params:
     RESIZE_HEIGHT("resize_h"),

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java?rev=962728&r1=962727&r2=962728&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java Sat Jul 10 00:17:23 2010
@@ -35,6 +35,7 @@ import org.apache.shindig.config.Contain
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.RenderingContext;
 import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
 import org.apache.shindig.gadgets.uri.JsUriManager.Versioner;
 import org.apache.shindig.gadgets.uri.UriCommon.Param;
@@ -78,6 +79,7 @@ public class DefaultJsUriManagerTest {
     assertEquals(CONTAINER, jsUri.getQueryParameter(Param.CONTAINER.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
   }
 
   @Test
@@ -94,6 +96,7 @@ public class DefaultJsUriManagerTest {
     assertEquals(CONTAINER, jsUri.getQueryParameter(Param.CONTAINER.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
   }
 
   @Test
@@ -113,6 +116,7 @@ public class DefaultJsUriManagerTest {
     assertEquals(version, jsUri.getQueryParameter(Param.VERSION.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
   }
 
   @Test
@@ -133,6 +137,24 @@ public class DefaultJsUriManagerTest {
     assertEquals(null, jsUri.getQueryParameter(Param.VERSION.getKey()));
     assertEquals("1", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
     assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
+  }
+  
+  @Test
+  public void makeJsUriWithContainerContext() {
+    ContainerConfig config = mockConfig("http://www.js.org", "/gadgets/js/");
+    TestDefaultJsUriManager manager = makeManager(config, null);
+    Gadget gadget = mockGadget(false, false, true);
+    List<String> extern = Lists.newArrayList("feature", "another");
+    Uri jsUri = manager.makeExternJsUri(gadget, extern);
+    assertFalse(manager.hadError());
+    assertEquals("http", jsUri.getScheme());
+    assertEquals("www.js.org", jsUri.getAuthority());
+    assertEquals("/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX, jsUri.getPath());
+    assertEquals(CONTAINER, jsUri.getQueryParameter(Param.CONTAINER.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
+    assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+    assertEquals("1", jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
   }
 
   // processJsUri tests
@@ -170,28 +192,18 @@ public class DefaultJsUriManagerTest {
     assertSame(DefaultJsUriManager.INVALID_URI, jsUri);
   }
 
-  @Test(expected = GadgetException.class)
-  public void processNoValidJs() throws GadgetException {
-    String targetHost = "target-host.org";
-    ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js");
-    List<String> extern = Lists.newArrayList("feature", "another");
-    String version = "verstring";
-    DefaultJsUriManager manager = new DefaultJsUriManager(config, null);
-    Uri testUri = Uri.parse("http://target-host.org/gadgets/js?container=" + CONTAINER );
-    JsUri jsUri = manager.processExternJsUri(testUri);
-  }
-
   @Test
-  public void processPathSuffixMismatch() throws GadgetException {
+  public void processPathSuffixNoJs() throws GadgetException {
     String targetHost = "target-host.org";
     ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js");
     TestDefaultJsUriManager manager = makeManager(config, null);
-    Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature.gif?" +
+    Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature:another?" +
         Param.CONTAINER.getKey() + '=' + CONTAINER);
     JsUri jsUri = manager.processExternJsUri(testUri);
-    assertTrue(manager.hadError());
-    assertEquals(jsUri.getStatus(), UriStatus.BAD_URI);
-    assertSame(DefaultJsUriManager.INVALID_URI, jsUri);
+    assertFalse(manager.hadError());
+    assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED);
+    List<String> extern = Lists.newArrayList("feature", "another");
+    assertCollectionEquals(jsUri.getLibs(), extern);
   }
 
   @Test
@@ -338,11 +350,17 @@ public class DefaultJsUriManagerTest {
   }
 
   private Gadget mockGadget(boolean nocache, boolean debug) {
+    return mockGadget(nocache, debug, false);
+  }
+  
+  private Gadget mockGadget(boolean nocache, boolean debug, boolean isContainer) {
     GadgetContext context = createMock(GadgetContext.class);
     expect(context.getContainer()).andReturn(CONTAINER).anyTimes();
     expect(context.getIgnoreCache()).andReturn(nocache).anyTimes();
     expect(context.getDebug()).andReturn(debug).anyTimes();
     expect(context.getUrl()).andReturn(GADGET_URI).anyTimes();
+    expect(context.getRenderingContext()).andReturn(
+        isContainer ? RenderingContext.CONTAINER : RenderingContext.GADGET).anyTimes();
     replay(context);
     return new Gadget().setContext(context);
   }