Ugh, autoformatting in IntelliJ. Thought I had reverted, also I moved that file by mistake :( Fixing now.
On Tue, Jul 29, 2008 at 3:05 PM, Kevin Brown <[EMAIL PROTECTED]> wrote: > On Tue, Jul 29, 2008 at 2:59 PM, <[EMAIL PROTECTED]> wrote: > > > Author: lryan > > Date: Tue Jul 29 14:59:32 2008 > > New Revision: 680856 > > > > URL: http://svn.apache.org/viewvc?rev=680856&view=rev > > Log: > > Fix problem with non-inline JS being included out-of-order > > > > Added: > > > > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java > > - copied, changed from r679466, > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RequestItemTest.java > > > What do these changes have to do with your commit message? > > > > > > Modified: > > > > > > incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java > > > > Modified: > > > incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java > > URL: > > > http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java?rev=680856&r1=680855&r2=680856&view=diff > > > > > ============================================================================== > > --- > > > incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java > > (original) > > +++ > > > incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java > > Tue Jul 29 14:59:32 2008 > > @@ -19,6 +19,8 @@ > > > > package org.apache.shindig.gadgets.servlet; > > > > +import com.google.inject.Inject; > > + > > import org.apache.shindig.common.ContainerConfig; > > import org.apache.shindig.common.SecurityToken; > > import org.apache.shindig.common.SecurityTokenDecoder; > > @@ -40,9 +42,6 @@ > > import org.apache.shindig.gadgets.spec.ModulePrefs; > > import org.apache.shindig.gadgets.spec.Preload; > > import org.apache.shindig.gadgets.spec.View; > > - > > -import com.google.inject.Inject; > > - > > import org.json.JSONArray; > > import org.json.JSONException; > > import org.json.JSONObject; > > @@ -70,30 +69,45 @@ > > * Represents a single rendering task > > */ > > public class GadgetRenderingTask { > > + > > protected static final int DEFAULT_CACHE_TTL = 60 * 5; > > + > > protected static final String CAJA_PARAM = "caja"; > > + > > protected static final String LIBS_PARAM_NAME = "libs"; > > + > > protected static final Logger logger > > = Logger.getLogger("org.apache.shindig.gadgets"); > > - protected static final String STRICT_MODE_DOCTYPE = "<!DOCTYPE HTML > > PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \" > > http://www.w3.org/TR/html4/strict.dtd\<http://www.w3.org/TR/html4/strict.dtd%5C> > <http://www.w3.org/TR/html4/strict.dtd%5C> > > ">"; > > + > > + protected static final String STRICT_MODE_DOCTYPE > > + = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \" > > http://www.w3.org/TR/html4/strict.dtd\<http://www.w3.org/TR/html4/strict.dtd%5C> > <http://www.w3.org/TR/html4/strict.dtd%5C> > > ">"; > > > > private HttpServletRequest request; > > + > > private HttpServletResponse response; > > + > > private final GadgetServer server; > > + > > private final MessageBundleFactory messageBundleFactory; > > + > > private final GadgetFeatureRegistry registry; > > + > > private final ContainerConfig containerConfig; > > + > > private final UrlGenerator urlGenerator; > > + > > private final SecurityTokenDecoder tokenDecoder; > > + > > private GadgetContext context; > > + > > private final List<GadgetContentFilter> filters; > > + > > private final LockedDomainService domainLocker; > > + > > private String container = null; > > > > /** > > * Processes a single rendering request and produces output html or > > errors. > > - * > > - * @throws IOException > > */ > > public void process(HttpServletRequest request, HttpServletResponse > > response) > > throws IOException { > > @@ -111,7 +125,7 @@ > > > > if (!"http".equals(url.getScheme()) && > > !"https".equals(url.getScheme())) { > > response.sendError(HttpServletResponse.SC_BAD_REQUEST, > > - "Unsupported scheme (must be http or https)."); > > + "Unsupported scheme (must be http or https)."); > > return; > > } > > > > @@ -140,18 +154,14 @@ > > > > /** > > * Renders a successfully processed gadget. > > - * > > - * @param gadget > > - * @throws IOException > > - * @throws GadgetException > > */ > > private void outputGadget(Gadget gadget) throws IOException, > > GadgetException { > > View view = gadget.getView(containerConfig); > > if (view == null) { > > - throw new > > GadgetException(GadgetException.Code.UNKNOWN_VIEW_SPECIFIED, > > - "No appropriate view could be found for gadget: " + > > gadget.getSpec().getUrl()); > > + throw new > > GadgetException(GadgetException.Code.UNKNOWN_VIEW_SPECIFIED, > > + "No appropriate view could be found for gadget: " + > > gadget.getSpec().getUrl()); > > } > > - switch(view.getType()) { > > + switch (view.getType()) { > > case HTML: > > outputHtmlGadget(gadget, view); > > break; > > @@ -164,9 +174,7 @@ > > /** > > * Redirect a type=html gadget to a locked domain if necessary. > > * > > - * @param gadget > > * @return true if the request was handled, false if the request can > > proceed > > - * @throws IOException > > */ > > private boolean mustRedirectToLockedDomain(Gadget gadget) > > throws IOException { > > @@ -183,9 +191,9 @@ > > gadgetUrl, container); > > String redir = > > request.getScheme() + "://" + > > - required + > > - request.getServletPath() + '?' + > > - request.getQueryString(); > > + required + > > + request.getServletPath() + '?' + > > + request.getQueryString(); > > logger.info("Redirecting gadget " + context.getUrl() + " from domain > " > > + > > host + " to domain " + redir); > > response.sendRedirect(redir); > > @@ -195,11 +203,6 @@ > > > > /** > > * Handles type=html gadget output. > > - * > > - * @param gadget > > - * @param view > > - * @throws IOException > > - * @throws GadgetException > > */ > > private void outputHtmlGadget(Gadget gadget, View view) > > throws IOException, GadgetException { > > @@ -217,11 +220,11 @@ > > // TODO: Substitute gadgets.skins values in here. > > String boilerPlate > > = "<html><head><style type=\"text/css\">" + > > - "body,td,div,span,p{font-family:arial,sans-serif;}" + > > - "a {color:#0000cc;}a:visited {color:#551a8b;}" + > > - "a:active {color:#ff0000;}" + > > - "body{margin: 0px;padding: 0px;background-color:white;}" + > > - "</style></head>"; > > + "body,td,div,span,p{font-family:arial,sans-serif;}" + > > + "a {color:#0000cc;}a:visited {color:#551a8b;}" + > > + "a:active {color:#ff0000;}" + > > + "body{margin: 0px;padding: 0px;background-color:white;}" + > > + "</style></head>"; > > markup.append(boilerPlate); > > LocaleSpec localeSpec = gadget.getSpec().getModulePrefs().getLocale( > > gadget.getContext().getLocale()); > > @@ -229,11 +232,10 @@ > > markup.append("<body>"); > > } else { > > markup.append("<body dir=\"") > > - .append(localeSpec.getLanguageDirection()) > > - .append("\">"); > > + .append(localeSpec.getLanguageDirection()) > > + .append("\">"); > > } > > > > - StringBuilder externJs = new StringBuilder(); > > StringBuilder inlineJs = new StringBuilder(); > > String externFmt = "<script src=\"%s\"></script>"; > > String forcedLibs = request.getParameter("libs"); > > @@ -262,7 +264,12 @@ > > // Inline any libs that weren't forced > > for (JsLibrary library : gadget.getJsLibraries()) { > > if (library.getType().equals(JsLibrary.Type.URL)) { > > - externJs.append(String.format(externFmt, library.getContent())); > > + if (inlineJs.length() > 0) { > > + markup.append("<script><!--\n").append(inlineJs) > > + .append("\n-->\n</script>"); > > + inlineJs.setLength(0); > > + } > > + markup.append(String.format(externFmt, library.getContent())); > > } else { > > if (!libs.contains(library.getFeature())) { > > // already pulled this file in from the shared contents. > > @@ -293,11 +300,7 @@ > > > > if (inlineJs.length() > 0) { > > markup.append("<script><!--\n").append(inlineJs) > > - .append("\n-->\n</script>"); > > - } > > - > > - if (externJs.length() > 0) { > > - markup.append(externJs); > > + .append("\n-->\n</script>"); > > } > > > > String content = view.getContent(); > > @@ -306,8 +309,8 @@ > > } > > > > markup.append(content) > > - .append("<script>gadgets.util.runOnLoadHandlers();</script>") > > - .append("</body></html>"); > > + .append("<script>gadgets.util.runOnLoadHandlers();</script>") > > + .append("</body></html>"); > > if (context.getIgnoreCache()) { > > HttpUtil.setCachingHeaders(response, 0); > > } else if (request.getParameter("v") != null) { > > @@ -323,12 +326,8 @@ > > > > /** > > * Outputs a url type gadget by redirecting. > > - * > > - * @param gadget > > - * @param view > > - * @throws IOException > > */ > > - private void outputUrlGadget(Gadget gadget, View view) throws > > IOException { > > + private void outputUrlGadget(Gadget gadget, View view) throws > > IOException { > > // TODO: generalize this as injectedArgs on Gadget object > > > > // Preserve existing query string parameters. > > @@ -344,20 +343,20 @@ > > > > try { > > href = new URI(href.getScheme(), > > - href.getUserInfo(), > > - href.getHost(), > > - href.getPort(), > > - href.getPath(), > > - null, > > - null); > > + href.getUserInfo(), > > + href.getHost(), > > + href.getPort(), > > + href.getPath(), > > + null, > > + null); > > } catch (URISyntaxException e) { > > // Not really ever going to happen; input values are already OK. > > response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, > > - e.getMessage()); > > + e.getMessage()); > > } > > // Necessary to avoid double-URL-encoding of the JavaScript bundle > > portion of the query. > > StringBuilder redirectHref = new StringBuilder(href.toString()); > > - if (query.toString() != null ) { > > + if (query.toString() != null) { > > redirectHref.append('?'); > > redirectHref.append(query.toString()); > > } > > @@ -369,12 +368,8 @@ > > } > > > > /** > > - * Displays errors for failed GadgetRendering. > > - * Also sets the caching headers to insure that our server > > - * is not hurt by failing backends when nocache is not set. > > - * > > - * @param error > > - * @throws IOException > > + * Displays errors for failed GadgetRendering. Also sets the caching > > headers to insure that our > > + * server is not hurt by failing backends when nocache is not set. > > */ > > private void outputErrors(GadgetException error) throws IOException { > > // Log the errors here for now. We might want different severity > levels > > @@ -396,18 +391,15 @@ > > > > /** > > * Appends libs to the query string. > > - * @param libs > > - * @param query > > */ > > private void appendLibsToQuery(Set<String> libs, StringBuilder query) { > > query.append('&') > > - .append(LIBS_PARAM_NAME) > > - .append('=') > > - > .append(Utf8UrlCoder.encode(urlGenerator.getBundledJsParam(libs, > > context))); > > + .append(LIBS_PARAM_NAME) > > + .append('=') > > + .append(Utf8UrlCoder.encode(urlGenerator.getBundledJsParam(libs, > > context))); > > } > > > > /** > > - * @param req > > * @return Whether or not to use caja. > > */ > > protected boolean getUseCaja(HttpServletRequest req) { > > @@ -418,17 +410,16 @@ > > /** > > * Appends javascript configuration to the bottom of an existing script > > block. > > * > > - * Appends special configuration for gadgets.util.hasFeature and > > - * gadgets.util.getFeatureParams to the output js. > > + * Appends special configuration for gadgets.util.hasFeature and > > gadgets.util.getFeatureParams to > > + * the output js. > > * > > - * This can't be handled via the normal configuration mechanism > because > > it is > > - * something that varies per request. > > + * This can't be handled via the normal configuration mechanism > because > > it is something that > > + * varies per request. > > * > > * Only explicitly <Require>'d and <Optional> features will be added. > > * > > - * @param gadget > > * @param reqs The features you require. > > - * @param js Existing js, to which the configuration will be appended. > > + * @param js Existing js, to which the configuration will be > appended. > > * @throws GadgetException if there is a problem with the gadget auth > > token > > */ > > private void appendJsConfig(Gadget gadget, Set<String> reqs, > > @@ -467,11 +458,7 @@ > > } > > > > /** > > - * Appends data from <Preload> elements to make them available to > > - * gadgets.io. > > - * > > - * @param gadget > > - * @param inlineJs > > + * Appends data from <Preload> elements to make them available to > > gadgets.io. > > */ > > private void appendPreloads(Gadget gadget, StringBuilder inlineJs) { > > // Output preloads. We will allow the gadget render to continue > > @@ -485,11 +472,11 @@ > > // Use raw param as key as URL may have to be decoded > > JSONObject jsonEntry = new JSONObject(); > > jsonEntry.put("body", response.getResponseAsString()) > > - .put("rc", response.getHttpStatusCode()); > > + .put("rc", response.getHttpStatusCode()); > > resp.put(entry.getKey().getHref().toString(), jsonEntry); > > } catch (JSONException e) { > > logger.log( > > - Level.INFO,"Error outputting preload for " + > > preload.getHref(), e); > > + Level.INFO, "Error outputting preload for " + > > preload.getHref(), e); > > } catch (InterruptedException e) { > > logger.log( > > Level.INFO, "Error scheduling preload for " + > > preload.getHref(), e); > > @@ -499,10 +486,12 @@ > > } > > } > > inlineJs.append("gadgets.io.preloaded_ = ").append(resp.toString()) > > - .append(";\n"); > > + .append(";\n"); > > } > > > > - /** Gets the container for the current request. */ > > + /** > > + * Gets the container for the current request. > > + */ > > private String getContainerForRequest() { > > if (container != null) { > > return container; > > @@ -521,8 +510,7 @@ > > /** > > * Validates that the parent parameter was acceptable. > > * > > - * @return True if the parent parameter is valid for the current > > - * container. > > + * @return True if the parent parameter is valid for the current > > container. > > */ > > private boolean validateParent() { > > String container = getContainerForRequest(); > > @@ -559,12 +547,12 @@ > > > > @Inject > > public GadgetRenderingTask(GadgetServer server, > > - MessageBundleFactory messageBundleFactory, > > - GadgetFeatureRegistry registry, > > - ContainerConfig containerConfig, > > - UrlGenerator urlGenerator, > > - SecurityTokenDecoder tokenDecoder, > > - LockedDomainService lockedDomainService) { > > + MessageBundleFactory messageBundleFactory, > > + GadgetFeatureRegistry registry, > > + ContainerConfig containerConfig, > > + UrlGenerator urlGenerator, > > + SecurityTokenDecoder tokenDecoder, > > + LockedDomainService lockedDomainService) { > > this.server = server; > > this.messageBundleFactory = messageBundleFactory; > > this.registry = registry; > > > > Copied: > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java > > (from r679466, > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RequestItemTest.java) > > URL: > > > http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java?p2=incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java&p1=incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RequestItemTest.java&r1=679466&r2=680856&rev=680856&view=diff > > > > > ============================================================================== > > --- > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RequestItemTest.java > > (original) > > +++ > > > incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java > > Tue Jul 29 14:59:32 2008 > > @@ -17,25 +17,25 @@ > > */ > > package org.apache.shindig.social.opensocial.service; > > > > +import com.google.common.collect.Maps; > > +import com.google.common.collect.Sets; > > + > > +import junit.framework.TestCase; > > + > > import org.apache.shindig.common.SecurityToken; > > import org.apache.shindig.common.testing.FakeGadgetToken; > > -import org.apache.shindig.social.opensocial.service.RequestItem; > > import org.apache.shindig.social.opensocial.spi.GroupId; > > import org.apache.shindig.social.opensocial.spi.PersonService; > > import org.apache.shindig.social.opensocial.spi.UserId; > > > > -import com.google.common.collect.Maps; > > -import com.google.common.collect.Sets; > > -import junit.framework.TestCase; > > - > > import java.util.Map; > > > > -public class RequestItemTest extends TestCase { > > +public class RestfulRequestItemTest extends TestCase { > > > > public void testParseUrl() throws Exception { > > String path = "/people/john.doe/@self"; > > > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > request.setUrl(path + "?fields=huey,dewey,louie"); > > > > request.putUrlParamsIntoParameters(); > > @@ -44,7 +44,7 @@ > > assertEquals("huey,dewey,louie", > > request.getParameters().get("fields")); > > > > // Try it without any params > > - request = new RequestItem(); > > + request = new RestfulRequestItem(); > > request.setUrl(path); > > > > request.putUrlParamsIntoParameters(); > > @@ -58,7 +58,7 @@ > > Map<String, String> params = Maps.newHashMap(); > > SecurityToken token = null; > > String method = "method"; > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setUrl(url); > > assertEquals(url, request.getUrl()); > > @@ -74,7 +74,7 @@ > > } > > > > public void testGetAppId() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.immutableMap("appId", "100")); > > assertEquals("100", request.getAppId()); > > @@ -86,21 +86,21 @@ > > } > > > > public void testGetUser() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.immutableMap("userId", "@owner")); > > assertEquals(UserId.Type.owner, request.getUser().getType()); > > } > > > > public void testGetGroup() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.immutableMap("groupId", "@self")); > > assertEquals(GroupId.Type.self, request.getGroup().getType()); > > } > > > > public void testStartIndex() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.<String, String>immutableMap("startIndex", > > null)); > > assertEquals(0, request.getStartIndex()); > > @@ -110,7 +110,7 @@ > > } > > > > public void testCount() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.<String, String>immutableMap("count", > > null)); > > assertEquals(20, request.getCount()); > > @@ -120,7 +120,7 @@ > > } > > > > public void testOrderBy() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.<String, String>immutableMap("orderBy", > > null)); > > assertEquals(PersonService.SortOrder.topFriends, > request.getOrderBy()); > > @@ -130,7 +130,7 @@ > > } > > > > public void testFilterBy() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.<String, String>immutableMap("filterBy", > > null)); > > assertEquals(PersonService.FilterType.all, request.getFilterBy()); > > @@ -140,7 +140,7 @@ > > } > > > > public void testFields() throws Exception { > > - RequestItem request = new RequestItem(); > > + RestfulRequestItem request = new RestfulRequestItem(); > > > > request.setParameters(Maps.<String, String>immutableMap("fields", > > null)); > > assertEquals(Sets.<String>newHashSet(), request.getFields()); > > @@ -149,4 +149,10 @@ > > assertEquals(Sets.newHashSet("happy", "sad", "grumpy"), > > request.getFields()); > > } > > > > + public void testRouteFromParameter() throws Exception { > > + assertEquals("path", > RestfulRequestItem.getServiceFromPath("/path")); > > + assertEquals("path", > > RestfulRequestItem.getServiceFromPath("/path/fun")); > > + assertEquals("path", > > RestfulRequestItem.getServiceFromPath("/path/fun/yes")); > > + } > > + > > } > > \ No newline at end of file > > > > > > >

