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;
   }
 
   /**