You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ga...@apache.org on 2010/11/14 19:34:14 UTC
svn commit: r1035040 - in
/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite:
AbsolutePathReferenceRewriter.java AbsolutePathReferenceVisitor.java
Author: gagan
Date: Sun Nov 14 18:34:13 2010
New Revision: 1035040
URL: http://svn.apache.org/viewvc?rev=1035040&view=rev
Log:
Patch by Kuntal Loya | Issue 3015041: Save the base Uri for a document in the AbsolutePathReferenceVisitor | http://codereview.appspot.com/3015041/
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceRewriter.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceVisitor.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceRewriter.java?rev=1035040&r1=1035039&r2=1035040&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceRewriter.java Sun Nov 14 18:34:13 2010
@@ -18,8 +18,14 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.gadgets.Gadget;
+
+import java.util.List;
+
/**
* Rewriter that converts all url's to absolute.
*
@@ -27,7 +33,11 @@ import com.google.inject.Inject;
*/
public class AbsolutePathReferenceRewriter extends DomWalker.Rewriter {
@Inject
- public AbsolutePathReferenceRewriter() {
- super(new AbsolutePathReferenceVisitor(AbsolutePathReferenceVisitor.Tags.RESOURCES));
+ public AbsolutePathReferenceRewriter() {}
+
+ @Override
+ protected List<DomWalker.Visitor> makeVisitors(Gadget context, Uri gadgetUri) {
+ return ImmutableList.<DomWalker.Visitor>of(
+ new AbsolutePathReferenceVisitor(AbsolutePathReferenceVisitor.Tags.RESOURCES));
}
}
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceVisitor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceVisitor.java?rev=1035040&r1=1035039&r2=1035040&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceVisitor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/AbsolutePathReferenceVisitor.java Sun Nov 14 18:34:13 2010
@@ -72,6 +72,9 @@ public class AbsolutePathReferenceVisito
// Map of tag name -> attribute type describing uris to make absolute.
private final Map<String, String> tagsToMakeAbsolute;
+ // The base Uri used to absolutify relative uris in the document being visited.
+ private Uri baseUri;
+
@Inject
public AbsolutePathReferenceVisitor(Tags... resourceTags) {
Map<String, String> tagsToMakeAbsolute = new HashMap<String, String>();
@@ -151,9 +154,12 @@ public class AbsolutePathReferenceVisito
* @return The uri to resolve non absolute uri's relative to.
*/
private Uri getBaseResolutionUri(Gadget gadget, Node node) {
- Uri pageUri = gadget.getSpec().getUrl();
- Uri baseUri = getBaseUri(node.getOwnerDocument());
- return baseUri != null ? baseUri : pageUri;
+ if (baseUri == null) {
+ Uri pageUri = gadget.getSpec().getUrl();
+ Uri baseTagUri = getBaseUri(node.getOwnerDocument());
+ baseUri = baseTagUri != null ? baseTagUri : pageUri;
+ }
+ return baseUri;
}
/**