Author: lryan
Date: Tue Jun 24 13:55:24 2008
New Revision: 671340

URL: http://svn.apache.org/viewvc?rev=671340&view=rev
Log:
Dont throw expections on invalid URIs during rewrtie. Just return the invalid 
content unmodified

Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java?rev=671340&r1=671339&r2=671340&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java
 Tue Jun 24 13:55:24 2008
@@ -21,18 +21,22 @@
 import org.apache.shindig.common.util.Utf8UrlCoder;
 
 import java.net.URI;
+import java.net.URISyntaxException;
 
 /**
- * Simple link rewriter that will rewrite a link to the form
- * http://www.host.com/proxy/url=<url encoded link>&gadget=<gadget spec 
url>&fp=<fingeprint of rewriting rule>
+ * Simple link rewriter that will rewrite a link to the form 
http://www.host.com/proxy/url=<url
+ * encoded link>&gadget=<gadget spec url>&fp=<fingeprint of rewriting rule>
  */
 public class ProxyingLinkRewriter implements LinkRewriter {
 
   private final String prefix;
+
   private final ContentRewriterFeature rewriterFeature;
+
   private final URI gadgetUri;
 
-  public ProxyingLinkRewriter(URI gadgetUri, ContentRewriterFeature 
rewriterFeature, String prefix) {
+  public ProxyingLinkRewriter(URI gadgetUri, ContentRewriterFeature 
rewriterFeature,
+      String prefix) {
     this.prefix = prefix;
     this.rewriterFeature = rewriterFeature;
     this.gadgetUri = gadgetUri;
@@ -44,17 +48,23 @@
     if (link.length() == 0) {
       return link;
     }
-    URI uri = context.resolve(link);
-    if (rewriterFeature.shouldRewriteURL(uri.toString())) {
-      return prefix
-          + Utf8UrlCoder.encode(uri.toString())
-          + "&gadget="
-          + Utf8UrlCoder.encode(gadgetUri.toString())
-          + "&fp="
-          + rewriterFeature.getFingerprint();
-    } else {
-      return uri.toString();
+
+    try {
+      URI linkUri = new URI(link);
+      URI uri = context.resolve(linkUri);
+      if (rewriterFeature.shouldRewriteURL(uri.toString())) {
+        return prefix
+            + Utf8UrlCoder.encode(uri.toString())
+            + "&gadget="
+            + Utf8UrlCoder.encode(gadgetUri.toString())
+            + "&fp="
+            + rewriterFeature.getFingerprint();
+      } else {
+        return uri.toString();
+      }
+    } catch (URISyntaxException use) {
+      // Unrecoverable. Just return link
+      return link;
     }
   }
-
 }

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java?rev=671340&r1=671339&r2=671340&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
 Tue Jun 24 13:55:24 2008
@@ -50,6 +50,12 @@
         rewrite(val));
   }
 
+  public void testInvalidCharRewrite() {
+    String val = "/images/opensocial/movie_trivia/76/${quiz.picture_url}";
+    assertEquals("/images/opensocial/movie_trivia/76/${quiz.picture_url}",
+        rewrite(val));
+  }
+
    public void testEmpty() {
     String val = " ";
     assertEquals("", rewrite(val));


Reply via email to