You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by lr...@apache.org on 2009/02/05 02:40:09 UTC

svn commit: r740970 - /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.java

Author: lryan
Date: Thu Feb  5 01:40:08 2009
New Revision: 740970

URL: http://svn.apache.org/viewvc?rev=740970&view=rev
Log:
Fix ProxyLinkrewriter to detect if link is already proxied and correctly re-proxy the target

Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriter.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=740970&r1=740969&r2=740970&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 Thu Feb  5 01:40:08 2009
@@ -29,6 +29,7 @@
 public class ProxyingLinkRewriter implements LinkRewriter {
 
   private final String prefix;
+  private final Uri parsedPrefix;
 
   private final ContentRewriterFeature rewriterFeature;
 
@@ -37,6 +38,7 @@
   public ProxyingLinkRewriter(Uri gadgetUri, ContentRewriterFeature rewriterFeature,
       String prefix) {
     this.prefix = prefix;
+    parsedPrefix = Uri.parse(prefix);
     this.rewriterFeature = rewriterFeature;
     this.gadgetUri = gadgetUri;
   }
@@ -49,7 +51,7 @@
     }
 
     try {
-      Uri linkUri = Uri.parse(link);
+      Uri linkUri = processLink(Uri.parse(link));
       Uri uri = context.resolve(linkUri);
       if (rewriterFeature.shouldRewriteURL(uri.toString())) {
         String result = prefix
@@ -69,4 +71,15 @@
       return link;
     }
   }
+
+  /**
+   * Preprocess link to avoid double-proxying
+   */
+  private Uri processLink(Uri original) {
+    if (parsedPrefix.getPath().equals(original.getPath())) {
+      // Link is already rewritten to the proxy so extract the url param
+      return Uri.parse(original.getQueryParameter("url"));
+    }
+    return original;
+  }
 }