Author: etnu
Date: Tue Oct 7 13:56:00 2008
New Revision: 702633
URL: http://svn.apache.org/viewvc?rev=702633&view=rev
Log:
Passed lang and country query parameters to proxied rendering requests.
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/HtmlRenderer.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java?rev=702633&r1=702632&r2=702633&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java
(original)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java
Tue Oct 7 13:56:00 2008
@@ -18,9 +18,10 @@
*/
package org.apache.shindig.common.uri;
+import org.apache.shindig.common.util.Utf8UrlCoder;
+
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import org.apache.shindig.common.util.Utf8UrlCoder;
import java.util.Collection;
import java.util.Collections;
@@ -43,7 +44,7 @@
private String path;
private String query;
private String fragment;
- private Map<String, List<String>> queryParameters;
+ private final Map<String, List<String>> queryParameters;
/**
@@ -160,6 +161,14 @@
}
/**
+ * Force overwrites a given query parameter with the given value.
+ */
+ public UriBuilder putQueryParameter(String name, String... values) {
+ queryParameters.put(name, Lists.newArrayList(values));
+ return this;
+ }
+
+ /**
* @return The queryParameters part of the uri, separated into component
parts.
*/
public Map<String, List<String>> getQueryParameters() {
@@ -212,7 +221,7 @@
buf.append('&');
}
firstDone = true;
-
+
buf.append(name)
.append('=')
.append(Utf8UrlCoder.encode(value));
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/HtmlRenderer.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/HtmlRenderer.java?rev=702633&r1=702632&r2=702633&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/HtmlRenderer.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/HtmlRenderer.java
Tue Oct 7 13:56:00 2008
@@ -18,7 +18,7 @@
*/
package org.apache.shindig.gadgets.render;
-import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.common.uri.UriBuilder;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
@@ -77,13 +77,17 @@
return rewriter.rewriteGadget(gadget, view.getContent());
} else {
// TODO: Add current url to GadgetContext to support transitive
proxying.
- HttpRequest request = new HttpRequest(view.getHref())
+ UriBuilder uri = new UriBuilder(view.getHref());
+ uri.addQueryParameter("lang", context.getLocale().getLanguage());
+ uri.addQueryParameter("country", context.getLocale().getCountry());
+
+ HttpRequest request = new HttpRequest(uri.toUri())
.setIgnoreCache(context.getIgnoreCache())
.setOAuthArguments(new OAuthArguments(view))
.setAuthType(view.getAuthType())
.setSecurityToken(context.getToken())
.setContainer(context.getContainer())
- .setGadget(Uri.fromJavaUri(context.getUrl()));
+ .setGadget(spec.getUrl());
HttpResponse response = fetcher.fetch(request);
if (response.getHttpStatusCode() != HttpResponse.SC_OK) {
throw new RenderingException("Unable to reach remote host. HTTP
status " +
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java?rev=702633&r1=702632&r2=702633&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
Tue Oct 7 13:56:00 2008
@@ -24,6 +24,7 @@
import org.apache.shindig.auth.AnonymousSecurityToken;
import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.common.uri.UriBuilder;
import org.apache.shindig.common.xml.XmlUtil;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
@@ -41,8 +42,8 @@
import org.junit.Test;
-import java.net.URI;
import java.util.Arrays;
+import java.util.Locale;
import java.util.Map;
/**
@@ -53,13 +54,10 @@
private static final String BASIC_HTML_CONTENT = "Hello, World!";
private static final String PROXIED_HTML_CONTENT = "Hello, Universe!";
private static final Uri PROXIED_HTML_HREF =
Uri.parse("http://example.org/proxied.php");
+ private static final Uri EXPECTED_PROXIED_HTML_HREF
+ = Uri.parse("http://example.org/proxied.php?lang=all&country=ALL");
private static final GadgetContext CONTEXT = new GadgetContext() {
@Override
- public URI getUrl() {
- return SPEC_URL.toJavaUri();
- }
-
- @Override
public SecurityToken getToken() {
return new AnonymousSecurityToken();
}
@@ -96,14 +94,14 @@
@Test
public void renderProxied() throws Exception {
- fetcher.plainResponses.put(PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
+ fetcher.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
String content = renderer.render(makeHrefGadget("none"));
assertEquals(PROXIED_HTML_CONTENT, content);
}
@Test
public void renderProxiedSigned() throws Exception {
- fetcher.signedResponses.put(PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
+ fetcher.signedResponses.put(EXPECTED_PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
String content = renderer.render(makeHrefGadget("signed"));
assertEquals(PROXIED_HTML_CONTENT, content);
}
@@ -111,12 +109,35 @@
@Test
public void renderProxiedOAuth() throws Exception {
// TODO: We need to disambiguate between oauth and signed.
- fetcher.oauthResponses.put(PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
+ fetcher.oauthResponses.put(EXPECTED_PROXIED_HTML_HREF, new
HttpResponse(PROXIED_HTML_CONTENT));
String content = renderer.render(makeHrefGadget("oauth"));
assertEquals(PROXIED_HTML_CONTENT, content);
}
@Test
+ public void renderProxiedCustomLocale() throws Exception {
+ UriBuilder uri = new UriBuilder(PROXIED_HTML_HREF);
+ uri.putQueryParameter("lang", "foo");
+ uri.putQueryParameter("country", "BAR");
+ Gadget gadget = makeHrefGadget("none");
+ gadget.setContext(new GadgetContext() {
+ @Override
+ public Locale getLocale() {
+ return new Locale("foo", "BAR");
+ }
+
+ @Override
+ public SecurityToken getToken() {
+ return new AnonymousSecurityToken();
+ }
+ });
+
+ fetcher.plainResponses.put(uri.toUri(), new
HttpResponse(PROXIED_HTML_CONTENT));
+ String content = renderer.render(gadget);
+ assertEquals(PROXIED_HTML_CONTENT, content);
+ }
+
+ @Test
public void doPreloading() throws Exception {
renderer.render(makeGadget(BASIC_HTML_CONTENT));
assertTrue("Preloading not performed.", preloaderService.wasPreloaded);