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;
+ }
}