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/11/03 21:33:23 UTC
svn commit: r1030653 - in
/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet:
JsHandler.java JsServlet.java
Author: johnh
Date: Wed Nov 3 20:33:23 2010
New Revision: 1030653
URL: http://svn.apache.org/viewvc?rev=1030653&view=rev
Log:
Remove dependency of JsHandler on HttpServletRequest. Makes it much easier to re-use JsHandler's in tools, metadata API, etc.
Modified:
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/servlet/JsServlet.java
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=1030653&r1=1030652&r2=1030653&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 Wed Nov 3 20:33:23 2010
@@ -17,7 +17,6 @@
*/
package org.apache.shindig.gadgets.servlet;
-import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.JsonSerializer;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.GadgetContext;
@@ -25,13 +24,11 @@ import org.apache.shindig.gadgets.Render
import org.apache.shindig.gadgets.config.ConfigContributor;
import org.apache.shindig.gadgets.features.FeatureRegistry;
import org.apache.shindig.gadgets.features.FeatureResource;
+import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
-import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.Map;
-import java.util.Set;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -54,62 +51,6 @@ public class JsHandler {
this.containerConfig = containerConfig;
this.configContributors = configContributors;
}
-
- /**
- * Get the JavaScript content from the feature name aliases.
- *
- * @param req the HttpRequest object.
- * @return JsHandlerResponse object that contains JavaScript data and cacheable flag.
- */
- public JsHandlerResponse getJsContent(final HttpServletRequest req) {
- // get the Set of features needed from request
- Set<String> needed = getFeaturesNeeded(req);
-
- // get the GadgetContext instance
- GadgetContext ctx = getGadgetContext(req);
-
- // get js data from feature resoources.
- return getFeatureResourcesContent(req, ctx, needed);
- }
-
- /**
- * Get the Set of feature names from the request.
- *
- * @param req the HttpServletRequest object.
- * @return Set of names of needed JavaScript as feature aliases from the request.
- */
- protected Set<String> getFeaturesNeeded(final HttpServletRequest req) {
- // Use the last component as filename; prefix is ignored
- String uri = req.getRequestURI();
- // We only want the file name part. There will always be at least 1 slash
- // (the server root), so this is always safe.
- String resourceName = uri.substring(uri.lastIndexOf('/') + 1);
- if (resourceName.endsWith(".js")) {
- // Lop off the suffix for lookup purposes
- resourceName = resourceName.substring(0, resourceName.length() - ".js".length());
- }
-
- Set<String> needed = ImmutableSet.copyOf(StringUtils.split(resourceName, ':'));
- return needed;
- }
-
- /**
- * Get the GadgetContext to be used when calling FeatureRegistry.getFeatureResources.
- *
- * @param req the HttpServletRequest object.
- * @return GadgetContext instance.
- */
- protected GadgetContext getGadgetContext(final HttpServletRequest req) {
- String containerParam = req.getParameter("container");
- String containerStr = req.getParameter("c");
-
- final RenderingContext context = "1".equals(containerStr) ?
- RenderingContext.CONTAINER : RenderingContext.GADGET;
- final String container =
- containerParam != null ? containerParam : ContainerConfig.DEFAULT_CONTAINER;
-
- return new JsGadgetContext(context, container);
- }
/**
* Get the content of the feature resources and push it to jsData.
@@ -119,18 +60,17 @@ public class JsHandler {
* @param needed Set of requested feature names.
* @return JsHandlerResponse object that contains JavaScript data and cacheable flag.
*/
- protected JsHandlerResponse getFeatureResourcesContent(final HttpServletRequest req,
- final GadgetContext ctx, Set<String> needed) {
+ protected Response getJsContent(final JsUri jsUri, String host) {
+ GadgetContext ctx = new JsGadgetContext(jsUri);
StringBuilder jsData = new StringBuilder();
+ Collection<String> needed = jsUri.getLibs();
Collection<? extends FeatureResource> resources =
registry.getFeatureResources(ctx, needed, null);
- String debugStr = req.getParameter("debug");
- boolean debug = "1".equals(debugStr);
String container = ctx.getContainer();
boolean isProxyCacheable = true;
for (FeatureResource featureResource : resources) {
- String content = debug ? featureResource.getDebugContent() : featureResource.getContent();
+ String content = jsUri.isDebug() ? featureResource.getDebugContent() : featureResource.getContent();
if (!featureResource.isExternal()) {
jsData.append(content);
} else {
@@ -157,23 +97,23 @@ public class JsHandler {
}
ConfigContributor contributor = configContributors.get(name);
if (contributor != null) {
- contributor.contribute(config, container, req.getHeader("Host"));
+ contributor.contribute(config, container, host);
}
}
jsData.append("gadgets.config.init(").append(JsonSerializer.serialize(config)).append(");\n");
}
}
- return new JsHandlerResponse(jsData, isProxyCacheable);
+ return new Response(jsData, isProxyCacheable);
}
/**
* Define the response data from JsHandler.
*/
- public static class JsHandlerResponse {
+ public static class Response {
private final boolean isProxyCacheable;
private final StringBuilder jsData;
- public JsHandlerResponse (StringBuilder jsData, boolean isProxyCacheable) {
+ public Response(StringBuilder jsData, boolean isProxyCacheable) {
this.jsData = jsData;
this.isProxyCacheable = isProxyCacheable;
}
@@ -194,9 +134,9 @@ public class JsHandler {
private final RenderingContext renderingContext;
private final String container;
- public JsGadgetContext(RenderingContext renderingContext, String container) {
- this.renderingContext = renderingContext;
- this.container = container;
+ public JsGadgetContext(JsUri ctx) {
+ this.renderingContext = ctx.getContext();
+ this.container = ctx.getContainer();
}
@Override
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=1030653&r1=1030652&r2=1030653&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 Wed Nov 3 20:33:23 2010
@@ -131,7 +131,8 @@ public class JsServlet extends InjectedS
}
// Get JavaScript content from features aliases request.
- JsHandler.JsHandlerResponse handlerResponse = jsHandler.getJsContent(req);
+ JsHandler.Response handlerResponse =
+ jsHandler.getJsContent(jsUri, req.getHeader("Host"));
StringBuilder jsData = handlerResponse.getJsData();
boolean isProxyCacheable = handlerResponse.isProxyCacheable();
@@ -189,7 +190,6 @@ public class JsServlet extends InjectedS
}
private int getCacheTtlSecs(JsUri jsUri) {
- int refresh;
if (jsUri.isNoCache()) {
return 0;
} else {