Author: hsaputra
Date: Fri Sep 16 23:14:35 2011
New Revision: 1171848

URL: http://svn.apache.org/viewvc?rev=1171848&view=rev
Log:
SHINDIG-1622 Add support for optional "method" parameter in the LinkSpec 
implementation

CR: https://reviews.apache.org/r/1928/


Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LinkSpec.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LinkSpecTest.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java?rev=1171848&r1=1171847&r2=1171848&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
 Fri Sep 16 23:14:35 2011
@@ -175,6 +175,7 @@ public class GadgetsHandlerApi {
   public interface LinkSpec {
     public String getRel();
     public Uri getHref();
+    public String getMethod();
   }
 
   public interface OAuthSpec {

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LinkSpec.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LinkSpec.java?rev=1171848&r1=1171847&r2=1171848&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LinkSpec.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LinkSpec.java
 Fri Sep 16 23:14:35 2011
@@ -40,12 +40,14 @@ public class LinkSpec {
     if (href == null) {
       throw new SpecParserException("Link/@href is required!");
     }
+    method = getMethodAttribute(element);
   }
 
   private LinkSpec(LinkSpec rhs, Substitutions substitutions) {
     rel = substitutions.substituteString(rhs.rel);
     base = rhs.base;
     href = base.resolve(substitutions.substituteUri(rhs.href));
+    method = rhs.method;
   }
 
   /**
@@ -65,6 +67,14 @@ public class LinkSpec {
   }
 
   /**
+   * Link/@method
+   */
+  private final String method;
+  public String getMethod() {
+    return method;
+  }
+
+  /**
    * Performs variable substitution on all visible elements.
    */
   public LinkSpec substitute(Substitutions substitutions) {
@@ -73,6 +83,12 @@ public class LinkSpec {
 
   @Override
   public String toString() {
-    return "<Link rel='" + rel + "' href='" + href.toString() + "'/>";
+    String methodAttribute = (method != null) ? "method='" + method + "' " : 
"";
+    return "<Link rel='" + rel + "' href='" + href.toString() + "' " + 
methodAttribute + "/>";
+  }
+
+  private String getMethodAttribute(Element element) {
+    String method = XmlUtil.getAttribute(element, "method");
+    return ("GET".equals(method) || "POST".equals(method)) ? method : "GET";
   }
 }

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LinkSpecTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LinkSpecTest.java?rev=1171848&r1=1171847&r2=1171848&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LinkSpecTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LinkSpecTest.java
 Fri Sep 16 23:14:35 2011
@@ -33,6 +33,8 @@ public class LinkSpecTest {
   private static final Uri SPEC_URL = Uri.parse("http://example.org/g.xml";);
   private static final String REL_VALUE = "foo";
   private static final Uri HREF_VALUE = Uri.parse("http://example.org/foo";);
+  private static final String DEFAULT_METHOD_VALUE = "GET";
+  private static final String METHOD_VALUE = "POST";
 
   @Test
   public void parseBasicLink() throws Exception {
@@ -57,6 +59,20 @@ public class LinkSpecTest {
   }
 
   @Test
+  public void parseMethodAttribute() throws Exception {
+    String xml = "<Link rel='" + REL_VALUE + "' href='" + HREF_VALUE + "'/>";
+    LinkSpec link = new LinkSpec(XmlUtil.parse(xml), SPEC_URL);
+    assertEquals(DEFAULT_METHOD_VALUE, link.getMethod());
+  }
+
+  @Test
+  public void parseAltMethodAttribute() throws Exception {
+    String xml = "<Link rel='" + REL_VALUE + "' href='" + HREF_VALUE + "' 
method='POST'/>";
+    LinkSpec link = new LinkSpec(XmlUtil.parse(xml), SPEC_URL);
+    assertEquals(METHOD_VALUE, link.getMethod());
+  }
+
+  @Test
   public void substitutionsPerformed() throws Exception {
     String rel = "foo.bar";
     String href = "jp-DE.xml";
@@ -102,6 +118,5 @@ public class LinkSpecTest {
     assertEquals(link.getHref(), link2.getHref());
     assertEquals(REL_VALUE, link2.getRel());
     assertEquals(HREF_VALUE, link2.getHref());
-
   }
 }


Reply via email to