You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by be...@apache.org on 2009/01/10 03:12:45 UTC

svn commit: r733223 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/oauth/ test/java/org/apache/shindig/gadgets/oauth/ test/java/org/apache/shindig/gadgets/servlet/

Author: beaton
Date: Fri Jan  9 18:12:45 2009
New Revision: 733223

URL: http://svn.apache.org/viewvc?rev=733223&view=rev
Log:
Expose all makeRequest and Preload options to fetching pipeline.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthArgumentsTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java?rev=733223&r1=733222&r2=733223&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthArguments.java Fri Jan  9 18:12:45 2009
@@ -24,6 +24,7 @@
 
 import com.google.common.collect.Maps;
 
+import java.util.Enumeration;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -80,6 +81,9 @@
 
   /** Include information about the viewer? */
   private boolean signViewer = false;
+  
+  /** Arbitrary name/value pairs associated with the request */
+  private final Map<String, String> requestOptions;
 
   /**
    * Parse OAuthArguments from parameters to the makeRequest servlet.
@@ -98,8 +102,22 @@
     bypassSpecCache = "1".equals(getRequestParam(request, BYPASS_SPEC_CACHE_PARAM, null));
     signOwner = Boolean.parseBoolean(getRequestParam(request, SIGN_OWNER_PARAM, "true"));
     signViewer = Boolean.parseBoolean(getRequestParam(request, SIGN_VIEWER_PARAM, "true"));
+    requestOptions = Maps.newHashMap();
+    Enumeration<String> params = getParameterNames(request);
+    while (params.hasMoreElements()) {
+      String name = params.nextElement();
+      requestOptions.put(name, request.getParameter(name));
+    }
+  }
+
+  @SuppressWarnings("unchecked")
+  private Enumeration<String> getParameterNames(HttpServletRequest request) {
+    return request.getParameterNames();
   }
 
+  /**
+   * Parse OAuthArguments from parameters to Preload, proxied content rendering, and OSML tags.
+   */
   public OAuthArguments(RequestAuthenticationInfo info) throws GadgetException {
     Map<String, String> attrs = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER);
     attrs.putAll(info.getAttributes());
@@ -112,6 +130,7 @@
     bypassSpecCache = false;
     signOwner = info.isSignOwner();
     signViewer = info.isSignViewer();
+    requestOptions = Maps.newHashMap(info.getAttributes());
   }
 
   /**
@@ -173,6 +192,7 @@
    * method in real code, consider writing a new constructor instead.
    */
   public OAuthArguments() {
+    requestOptions = Maps.newHashMap();
   }
 
 
@@ -189,6 +209,7 @@
     bypassSpecCache = orig.bypassSpecCache;
     signOwner = orig.signOwner;
     signViewer = orig.signViewer;
+    requestOptions = Maps.newHashMap(orig.requestOptions);
   }
 
   public boolean mustUseToken() {
@@ -270,4 +291,16 @@
   public void setSignViewer(boolean signViewer) {
     this.signViewer = signViewer;
   }
+  
+  public void setRequestOption(String name, String value) {
+    requestOptions.put(name, value);
+  }
+  
+  public void removeRequestOption(String name) {
+    requestOptions.remove(name);
+  }
+  
+  public String getRequestOption(String name) {
+    return requestOptions.get(name);
+  }
 }

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthArgumentsTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthArgumentsTest.java?rev=733223&r1=733222&r2=733223&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthArgumentsTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthArgumentsTest.java Fri Jan  9 18:12:45 2009
@@ -47,6 +47,7 @@
     		"OAUTH_REQuest_token='requesttoken' " +
     		"oauth_request_token_secret='tokensecret' " +
     		"OAUTH_USE_TOKEN='never' " +
+    		"random='stuff'" +
     		"/>";
 
     Preload preload = new Preload(XmlUtil.parse(xml), Uri.parse(""));
@@ -58,6 +59,7 @@
     assertEquals(UseToken.NEVER, params.getUseToken());
     assertNull(params.getOrigClientState());
     assertFalse(params.getBypassSpecCache());
+    assertEquals("stuff", params.getRequestOption("random"));
   }
 
   private FakeHttpServletRequest makeDummyRequest() throws Exception {
@@ -71,6 +73,7 @@
     req.setParameter("bypassSpecCache", true, "1");
     req.setParameter("signOwner", true, "false");
     req.setParameter("signViewer", true, "false");
+    req.setParameter("random", true, "stuff");
     return req;
   }
 
@@ -88,6 +91,7 @@
     assertEquals(true, args.getBypassSpecCache());
     assertEquals(false, args.getSignOwner());
     assertEquals(false, args.getSignViewer());
+    assertEquals("stuff", args.getRequestOption("random"));
   }
 
   @Test
@@ -103,6 +107,7 @@
     assertEquals(false, args.getBypassSpecCache());
     assertEquals(true, args.getSignOwner());
     assertEquals(true, args.getSignViewer());
+    assertNull(args.getRequestOption("random"));
   }
 
   @Test
@@ -152,6 +157,11 @@
 
     args.setUseToken(UseToken.IF_AVAILABLE);
     assertEquals(UseToken.IF_AVAILABLE, args.getUseToken());
+    
+    args.setRequestOption("foo", "bar");
+    assertEquals("bar", args.getRequestOption("foo"));
+    args.removeRequestOption("foo");
+    assertNull(args.getRequestOption("foo"));
   }
 
   @Test
@@ -169,6 +179,18 @@
     assertEquals(false, args.getSignOwner());
     assertEquals(false, args.getSignViewer());
   }
+  
+  @Test
+  public void testCopyConstructor_options() throws Exception {
+    HttpServletRequest req = makeDummyRequest();
+    OAuthArguments args = new OAuthArguments(AuthType.OAUTH, req);
+    args = new OAuthArguments(args);
+    
+    args.setRequestOption("foo", "bar");
+    args.setRequestOption("quux", "baz");
+    assertEquals("bar", args.getRequestOption("foo"));
+    assertEquals("baz", args.getRequestOption("quux"));
+  }
 
   @Test
   public void testParseUseToken() throws Exception {

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=733223&r1=733222&r2=733223&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java Fri Jan  9 18:12:45 2009
@@ -30,6 +30,7 @@
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.HttpResponseBuilder;
+import org.easymock.IAnswer;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -37,6 +38,10 @@
 import org.junit.Test;
 
 import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * Tests for MakeRequestHandler.
@@ -224,6 +229,18 @@
     assertTrue(rewriter.responseWasRewritten());
   }
 
+  private void expectParameters(HttpServletRequest request, String... params) {
+    final Vector<String> v = new Vector<String>();
+    for (String p : params) {
+      v.add(p);
+    }
+    expect(request.getParameterNames()).andStubAnswer(new IAnswer<Enumeration<String>>() {
+      public Enumeration<String> answer() throws Throwable{
+        return v.elements();
+      }      
+    });
+  }
+  
   public void testSignedGetRequest() throws Exception {
 
     expect(request.getAttribute(AuthInfo.Attribute.SECURITY_TOKEN.getId()))
@@ -234,6 +251,7 @@
         .setAuthType(AuthType.SIGNED);
     expect(pipeline.execute(expected))
         .andReturn(new HttpResponse(RESPONSE_BODY));
+    expectParameters(request, MakeRequestHandler.AUTHZ_PARAM);
     replay();
 
     handler.fetch(request, recorder);
@@ -251,6 +269,8 @@
         .andReturn(DUMMY_TOKEN).atLeastOnce();
     expect(request.getParameter(MakeRequestHandler.AUTHZ_PARAM))
         .andReturn(AuthType.SIGNED.toString()).atLeastOnce();
+    expectParameters(request, MakeRequestHandler.METHOD_PARAM, MakeRequestHandler.POST_DATA_PARAM,
+        MakeRequestHandler.AUTHZ_PARAM);
     replay();
 
     handler.fetch(request, recorder);
@@ -271,6 +291,7 @@
         .andReturn(authToken).atLeastOnce();
     expect(request.getParameter(MakeRequestHandler.AUTHZ_PARAM))
         .andReturn(AuthType.SIGNED.toString()).atLeastOnce();
+    expectParameters(request, MakeRequestHandler.AUTHZ_PARAM);
     replay();
 
     handler.fetch(request, recorder);
@@ -292,6 +313,7 @@
         .andReturn(AuthType.OAUTH.toString()).atLeastOnce();
     // This isn't terribly accurate, but is close enough for this test.
     expect(request.getParameterMap()).andStubReturn(Collections.EMPTY_MAP);
+    expectParameters(request);
     replay();
 
     handler.fetch(request, recorder);