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;
+ }
}