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);


Reply via email to