Author: lindner
Date: Mon May 17 05:18:51 2010
New Revision: 944974
URL: http://svn.apache.org/viewvc?rev=944974&view=rev
Log:
SHINDIG-1328 | support relative URLs for oauth service declaration
Modified:
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/common/xml/XmlUtilTest.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/OAuthService.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/OAuthSpecTest.java
Modified:
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java?rev=944974&r1=944973&r2=944974&view=diff
==============================================================================
---
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
(original)
+++
shindig/trunk/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
Mon May 17 05:18:51 2010
@@ -194,15 +194,19 @@ public class XmlUtil {
* or https URI.
* @param node
* @param attr
- * @param def
- * @return the parsed uri, or def if the attribute is not a valid http or
+ * @param base
+ *...@param def @return the parsed uri, or def if the attribute is not a
valid http or
* https URI.
*/
- public static Uri getHttpUriAttribute(Node node, String attr, Uri def) {
+ public static Uri getHttpUriAttribute(Node node, String attr, Uri base, Uri
def) {
Uri uri = getUriAttribute(node, attr, def);
if (uri == null) {
return def;
}
+ // resolve to base before checking
+ if (base != null) {
+ uri = base.resolve(uri);
+ }
if (!"http".equalsIgnoreCase(uri.getScheme()) &&
!"https".equalsIgnoreCase(uri.getScheme())) {
return def;
}
@@ -213,11 +217,12 @@ public class XmlUtil {
* Retrieves an attribute as a URI, and verifies that the URI is an http or
https URI.
* @param node
* @param attr
+ * @param base
* @return the parsed uri, or null if the attribute is not a valid http or
* https URI.
*/
- public static Uri getHttpUriAttribute(Node node, String attr) {
- return getHttpUriAttribute(node, attr, null);
+ public static Uri getHttpUriAttribute(Node node, String attr, Uri base) {
+ return getHttpUriAttribute(node, attr, base, null);
}
/**
Modified:
shindig/trunk/java/common/src/test/java/org/apache/shindig/common/xml/XmlUtilTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/xml/XmlUtilTest.java?rev=944974&r1=944973&r2=944974&view=diff
==============================================================================
---
shindig/trunk/java/common/src/test/java/org/apache/shindig/common/xml/XmlUtilTest.java
(original)
+++
shindig/trunk/java/common/src/test/java/org/apache/shindig/common/xml/XmlUtilTest.java
Mon May 17 05:18:51 2010
@@ -106,9 +106,9 @@ public class XmlUtilTest {
@Test
public void testHttpUriAttribute() {
- assertEquals(HTTPS_URI_VALUE, XmlUtil.getHttpUriAttribute(node,
HTTPS_URI_ATTR));
- assertNull(XmlUtil.getHttpUriAttribute(node, FTP_URI_ATTR));
- assertEquals(HTTPS_URI_VALUE, XmlUtil.getHttpUriAttribute(node,
FTP_URI_ATTR, HTTPS_URI_VALUE));
+ assertEquals(HTTPS_URI_VALUE, XmlUtil.getHttpUriAttribute(node,
HTTPS_URI_ATTR, null));
+ assertNull(XmlUtil.getHttpUriAttribute(node, FTP_URI_ATTR, null));
+ assertEquals(HTTPS_URI_VALUE, XmlUtil.getHttpUriAttribute(node,
FTP_URI_ATTR, null, HTTPS_URI_VALUE));
}
@Test(expected=XmlException.class)
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/OAuthService.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/OAuthService.java?rev=944974&r1=944973&r2=944974&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/OAuthService.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/OAuthService.java
Mon May 17 05:18:51 2010
@@ -207,7 +207,7 @@ public class OAuthService {
}
Uri parseAuthorizationUrl(Element child, Uri base) throws
SpecParserException {
- Uri url = XmlUtil.getHttpUriAttribute(child, URL_ATTR);
+ Uri url = XmlUtil.getHttpUriAttribute(child, URL_ATTR, base);
if (url == null) {
throw new SpecParserException("OAuth/Service/Authorization @url is not
valid: " +
child.getAttribute(URL_ATTR));
@@ -217,7 +217,7 @@ public class OAuthService {
EndPoint parseEndPoint(String where, Element child, Uri base) throws
SpecParserException {
- Uri url = XmlUtil.getHttpUriAttribute(child, URL_ATTR);
+ Uri url = XmlUtil.getHttpUriAttribute(child, URL_ATTR, base);
if (url == null) {
throw new SpecParserException("Not an HTTP url: " +
child.getAttribute(URL_ATTR));
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/OAuthSpecTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/OAuthSpecTest.java?rev=944974&r1=944973&r2=944974&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/OAuthSpecTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/OAuthSpecTest.java
Mon May 17 05:18:51 2010
@@ -42,6 +42,21 @@ public class OAuthSpecTest {
}
@Test
+ public void testOAuthRelativeUrl() throws Exception {
+ String xml = "<OAuth><Service>" +
+ "<Request url='/request'/>" +
+ "<Access url='/access'/>" +
+ "<Authorization url='/authorize'/>" +
+ "</Service></OAuth>";
+ OAuthSpec oauth = new OAuthSpec(XmlUtil.parse(xml), SPEC_URL);
+ assertEquals(1, oauth.getServices().size());
+ OAuthService service = oauth.getServices().get("");
+ assertEquals(service.getRequestUrl().url.toString(),
"http://example.org/request");
+ assertEquals(service.getAuthorizationUrl().toString(),
"http://example.org/authorize");
+ assertEquals(service.getAccessUrl().url.toString(),
"http://example.org/access");
+ }
+
+ @Test
public void testOAuthSpec_noservice() throws Exception {
String xml = "<OAuth/>";
OAuthSpec oauth = new OAuthSpec(XmlUtil.parse(xml), SPEC_URL);