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