You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/02/03 02:23:20 UTC
svn commit: r905859 - in /incubator/shindig/trunk/java:
common/src/main/java/org/apache/shindig/common/uri/
common/src/test/java/org/apache/shindig/common/uri/
gadgets/src/main/java/org/apache/shindig/gadgets/parse/
Author: johnh
Date: Wed Feb 3 01:23:19 2010
New Revision: 905859
URL: http://svn.apache.org/viewvc?rev=905859&view=rev
Log:
1. Fix subtle NPE occurring when UriBuilder-generated Uri with null path is base in a relative resolution.
2. Catch Runtime DOMException in fragment parser API.
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/Uri.java
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/uri/UriTest.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java
Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/Uri.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/Uri.java?rev=905859&r1=905858&r2=905859&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/Uri.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/uri/Uri.java Wed Feb 3 01:23:19 2010
@@ -171,8 +171,9 @@
result.setPath(relativePath);
} else {
// resolve a relative reference
- int endindex = path.lastIndexOf('/') + 1;
- result.setPath(normalizePath(path.substring(0, endindex) + relativePath));
+ String basePath = path != null ? path : "/";
+ int endindex = basePath.lastIndexOf('/') + 1;
+ result.setPath(normalizePath(basePath.substring(0, endindex) + relativePath));
}
}
Uri resolved = result.toUri();
Modified: incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/uri/UriTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/uri/UriTest.java?rev=905859&r1=905858&r2=905859&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/uri/UriTest.java (original)
+++ incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/uri/UriTest.java Wed Feb 3 01:23:19 2010
@@ -199,6 +199,14 @@
assertEquals("http://example.org/foo/bar/wee", base.resolve(other).toString());
}
+
+ @Test
+ public void resolvePathRelativeToNullPath() throws Exception {
+ Uri base = new UriBuilder().setScheme("http").setAuthority("example.org").toUri();
+ Uri other = Uri.parse("dir");
+
+ assertEquals("http://example.org/dir", base.resolve(other).toString());
+ }
@Test
public void resolvePathAbsolute() throws Exception {
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java?rev=905859&r1=905858&r2=905859&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java Wed Feb 3 01:23:19 2010
@@ -236,7 +236,15 @@
return;
}
}
- DocumentFragment fragment = parseFragmentImpl(source);
+
+ DocumentFragment fragment = null;
+ try {
+ fragment = parseFragmentImpl(source);
+ } catch (Exception e) {
+ // DOMException is a RuntimeException
+ throw new GadgetException(Code.HTML_PARSE_ERROR, e);
+ }
+
reprocessScriptForOpenSocial(fragment);
if (shouldCache) {
fragmentCache.addElement(key, fragment);