You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/06/01 21:28:43 UTC

svn commit: r950226 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/http/ main/java/org/apache/shindig/gadgets/render/ main/java/org/apache/shindig/gadgets/render/old/ main/java/org/apache/shindig/gadgets/rewrite/ main/java/o...

Author: johnh
Date: Tue Jun  1 19:28:42 2010
New Revision: 950226

URL: http://svn.apache.org/viewvc?rev=950226&view=rev
Log:
Part #2 of move to ResponseRewriter interfaces.

Converts RequestRewriter implementations to ResponseRewriters instead. Replaces
RequestRewriterRegistry with ResponseRewriterRegistry, with pre-cached
ResponseRewriterRegistry independently registered.

This is a distinctly breaking API change: all RequestRewriters must now be converted (rather easily, however) to ResponseRewriters.



Removed:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DefaultRequestRewriterRegistry.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RequestRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RequestRewriterRegistry.java
Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingGadgetRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CaptureRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriterUtils.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ConcatProxyServlet.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/RewriterTestBase.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/BaseRewriterTestCase.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java Tue Jun  1 19:28:42 2010
@@ -17,10 +17,7 @@
  */
 package org.apache.shindig.gadgets.http;
 
-import com.google.inject.Inject;
-
 import org.apache.shindig.auth.SecurityToken;
-import org.apache.shindig.common.util.TimeSource;
 import org.apache.shindig.gadgets.AuthType;
 import org.apache.shindig.gadgets.uri.UriCommon;
 
@@ -34,20 +31,10 @@ import org.apache.shindig.gadgets.uri.Ur
  * of building your own keys from scratch.
  */
 public abstract class AbstractHttpCache implements HttpCache {
-  private TimeSource clock = new TimeSource();
-
   private static final String RESIZE_HEIGHT = UriCommon.Param.RESIZE_HEIGHT.getKey();
   private static final String RESIZE_WIDTH = UriCommon.Param.RESIZE_WIDTH.getKey();
   private static final String RESIZE_QUALITY = UriCommon.Param.RESIZE_QUALITY.getKey();
 
-  /**
-   * Subclasses should call this directly or be injected themselves to override.
-   */
-  @Inject
-  public void setClock(TimeSource clock) {
-    this.clock = clock;
-  }
-
   // Implement these methods to create a concrete HttpCache class.
   protected abstract HttpResponse getResponseImpl(String key);
   protected abstract void addResponseImpl(String key, HttpResponse response);

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java Tue Jun  1 19:28:42 2010
@@ -21,6 +21,7 @@ import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
 import com.google.inject.internal.Nullable;
+import com.google.inject.name.Named;
 
 import org.apache.shindig.common.util.Utf8UrlCoder;
 import org.apache.shindig.gadgets.GadgetException;
@@ -45,6 +46,7 @@ public class DefaultRequestPipeline impl
   public DefaultRequestPipeline(HttpFetcher httpFetcher,
                                 HttpCache httpCache,
                                 Provider<OAuthRequest> oauthRequestProvider,
+                                @Named("shindig.rewriters.response.pre-cache")
                                 ResponseRewriterRegistry responseRewriterRegistry,
                                 InvalidationService invalidationService,
                                 @Nullable HttpResponseMetadataHelper metadataHelper) {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java Tue Jun  1 19:28:42 2010
@@ -24,11 +24,10 @@ import org.apache.sanselan.ImageReadExce
 import org.apache.sanselan.Sanselan;
 import org.apache.sanselan.common.byteSources.ByteSourceInputStream;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.CajaCssSanitizer;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 import org.apache.shindig.gadgets.uri.ProxyUriManager;
 
 import java.io.IOException;
@@ -40,7 +39,7 @@ import com.google.inject.Inject;
 /**
  * Rewriter that sanitizes CSS and image content.
  */
-public class SanitizingRequestRewriter implements RequestRewriter {
+public class SanitizingRequestRewriter implements ResponseRewriter {
   private static final Logger logger =
     Logger.getLogger(SanitizingRequestRewriter.class.getName());
 
@@ -57,29 +56,24 @@ public class SanitizingRequestRewriter i
     this.proxyUriManager = proxyUriManager;
   }
 
-  public boolean rewrite(HttpRequest request, HttpResponse resp, MutableContent content) {
+  public void rewrite(HttpRequest request, HttpResponseBuilder resp) {
     // Content fetched through the proxy can stipulate that it must be sanitized.
     if (request.isSanitizationRequested() &&
         featureConfigFactory.get(request).shouldRewriteURL(request.getUri().toString())) {
       if (StringUtils.isEmpty(request.getRewriteMimeType())) {
         logger.log(Level.WARNING, "Request to sanitize without content type for "
             + request.getUri());
-        content.setContent("");
-        return true;
+        resp.setContent("");
       } else if (request.getRewriteMimeType().equalsIgnoreCase("text/css")) {
-        return rewriteProxiedCss(request, resp, content);
+        rewriteProxiedCss(request, resp);
       } else if (request.getRewriteMimeType().toLowerCase().startsWith("image/")) {
-        return rewriteProxiedImage(request, resp, content);
+        rewriteProxiedImage(request, resp);
       } else {
         logger.log(Level.WARNING, "Request to sanitize unknown content type "
             + request.getRewriteMimeType()
             + " for " + request.getUri());
-        content.setContent("");
-        return true;
+        resp.setContent("");
       }
-    } else {
-      // No Op
-      return false;
     }
   }
 
@@ -87,8 +81,7 @@ public class SanitizingRequestRewriter i
    * We don't actually rewrite the image we just ensure that it is in fact a valid
    * and known image type.
    */
-  private boolean rewriteProxiedImage(HttpRequest request, HttpResponse resp,
-      MutableContent content) {
+  private void rewriteProxiedImage(HttpRequest request, HttpResponseBuilder resp) {
     boolean imageIsSafe = false;
     try {
       String contentType = resp.getHeader("Content-Type");
@@ -96,30 +89,30 @@ public class SanitizingRequestRewriter i
         // Unspecified or unknown image mime type.
         try {
           ImageFormat imageFormat = Sanselan
-              .guessFormat(new ByteSourceInputStream(resp.getResponse(),
-              request.getUri().getPath()));
+              .guessFormat(new ByteSourceInputStream(resp.getContentBytes(),
+                  request.getUri().getPath()));
           if (imageFormat == ImageFormat.IMAGE_FORMAT_UNKNOWN) {
             logger.log(Level.INFO, "Unable to sanitize unknown image type "
                 + request.getUri().toString());
-            return true;
+            return;
           }
           imageIsSafe = true;
           // Return false to indicate that no rewriting occurred
-          return false;
+          return;
         } catch (IOException ioe) {
           throw new RuntimeException(ioe);
         } catch (ImageReadException ire) {
           // Unable to read the image so its not safe
           logger.log(Level.INFO, "Unable to detect image type for " +request.getUri().toString() +
               " for sanitized content", ire);
-          return true;
+          return;
         }
       } else {
-        return true;
+        return;
       }
     } finally {
       if (!imageIsSafe) {
-        content.setContent("");
+        resp.setContent("");
       }
     }
   }
@@ -127,25 +120,23 @@ public class SanitizingRequestRewriter i
   /**
    * Sanitize a CSS file.
    */
-  private boolean rewriteProxiedCss(HttpRequest request, HttpResponse response,
-      MutableContent content) {
+  private void rewriteProxiedCss(HttpRequest request, HttpResponseBuilder resp) {
     String sanitized = "";
     try {
-      String contentType = response.getHeader("Content-Type");
+      String contentType = resp.getHeader("Content-Type");
       if (contentType == null || contentType.toLowerCase().startsWith("text/")) {
         SanitizingProxyUriManager cssImageRewriter =
             new SanitizingProxyUriManager(proxyUriManager, "image/*");
         SanitizingProxyUriManager cssImportRewriter =
             new SanitizingProxyUriManager(proxyUriManager, "text/css");
-        sanitized = cssSanitizer.sanitize(content.getContent(), request.getUri(),
+        sanitized = cssSanitizer.sanitize(resp.getContent(), request.getUri(),
             cssImportRewriter, cssImageRewriter);
       }
-      
-      return true;
+      return;
     } finally {
       // Set sanitized content in finally to ensure it is always cleared in
       // the case of errors
-      content.setContent(sanitized);
+      resp.setContent(sanitized);
     }
   }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingGadgetRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingGadgetRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingGadgetRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingGadgetRewriter.java Tue Jun  1 19:28:42 2010
@@ -36,7 +36,6 @@ import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.UserDataHandler;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -57,10 +56,6 @@ import java.util.Set;
  * rendering, OSML, etc.)
  */
 public class SanitizingGadgetRewriter implements GadgetRewriter {
-
-  /** Key stored as element user-data to bypass sanitization */
-  private static final String BYPASS_SANITIZATION_KEY = "shindig.bypassSanitization";
-
   /**
    * Is the Gadget to be rendered sanitized?
    * @return true if sanitization will be enabled
@@ -69,14 +64,6 @@ public class SanitizingGadgetRewriter im
     return "1".equals(gadget.getContext().getParameter("sanitize"));
   }
   
-  private static UserDataHandler copyOnClone = new UserDataHandler() {
-    public void handle(short operation, String key, Object data, Node src, Node dst) {
-      if (operation == NODE_IMPORTED || operation == NODE_CLONED) {
-        dst.setUserData(key, data, copyOnClone);
-      }
-    }
-  };
-  
   private final Set<String> allowedTags;
   private final Set<String> allowedAttributes;
   private final CajaCssSanitizer cssSanitizer;

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriter.java Tue Jun  1 19:28:42 2010
@@ -24,11 +24,10 @@ import org.apache.sanselan.ImageReadExce
 import org.apache.sanselan.Sanselan;
 import org.apache.sanselan.common.byteSources.ByteSourceInputStream;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.old.CajaCssSanitizer;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 
 import java.io.IOException;
 import java.util.logging.Level;
@@ -39,7 +38,7 @@ import com.google.inject.Inject;
 /**
  * Rewriter that sanitizes CSS and image content.
  */
-public class SanitizingRequestRewriter implements RequestRewriter {
+public class SanitizingRequestRewriter implements ResponseRewriter {
   private static final Logger logger =
     Logger.getLogger(SanitizingRequestRewriter.class.getName());
 
@@ -57,7 +56,7 @@ public class SanitizingRequestRewriter i
     this.sanitizingProxyingLinkRewriterFactory = sanitizingProxyingLinkRewriterFactory;
   }
 
-  public boolean rewrite(HttpRequest request, HttpResponse resp, MutableContent content) {
+  public void rewrite(HttpRequest request, HttpResponseBuilder resp) {
     // Content fetched through the proxy can stipulate that it must be sanitized.
     if (request.isSanitizationRequested()) {
       ContentRewriterFeature.Config rewriterFeature =
@@ -65,22 +64,17 @@ public class SanitizingRequestRewriter i
       if (StringUtils.isEmpty(request.getRewriteMimeType())) {
         logger.log(Level.WARNING, "Request to sanitize without content type for "
             + request.getUri());
-        content.setContent("");
-        return true;
+        resp.setContent("");
       } else if (request.getRewriteMimeType().equalsIgnoreCase("text/css")) {
-        return rewriteProxiedCss(request, resp, content, rewriterFeature);
+        rewriteProxiedCss(request, resp, rewriterFeature);
       } else if (request.getRewriteMimeType().toLowerCase().startsWith("image/")) {
-        return rewriteProxiedImage(request, resp, content);
+        rewriteProxiedImage(request, resp);
       } else {
         logger.log(Level.WARNING, "Request to sanitize unknown content type "
             + request.getRewriteMimeType()
             + " for " + request.getUri());
-        content.setContent("");
-        return true;
+        resp.setContent("");
       }
-    } else {
-      // No Op
-      return false;
     }
   }
 
@@ -88,8 +82,7 @@ public class SanitizingRequestRewriter i
    * We don't actually rewrite the image we just ensure that it is in fact a valid
    * and known image type.
    */
-  private boolean rewriteProxiedImage(HttpRequest request, HttpResponse resp,
-      MutableContent content) {
+  private void rewriteProxiedImage(HttpRequest request, HttpResponseBuilder resp) {
     boolean imageIsSafe = false;
     try {
       String contentType = resp.getHeader("Content-Type");
@@ -97,30 +90,30 @@ public class SanitizingRequestRewriter i
         // Unspecified or unknown image mime type.
         try {
           ImageFormat imageFormat = Sanselan
-          .guessFormat(new ByteSourceInputStream(resp.getResponse(),
-              request.getUri().getPath()));
+              .guessFormat(new ByteSourceInputStream(resp.getContentBytes(),
+                  request.getUri().getPath()));
           if (imageFormat == ImageFormat.IMAGE_FORMAT_UNKNOWN) {
             logger.log(Level.INFO, "Unable to sanitize unknown image type "
                 + request.getUri().toString());
-            return true;
+            return;
           }
           imageIsSafe = true;
           // Return false to indicate that no rewriting occurred
-          return false;
+          return;
         } catch (IOException ioe) {
           throw new RuntimeException(ioe);
         } catch (ImageReadException ire) {
           // Unable to read the image so its not safe
           logger.log(Level.INFO, "Unable to detect image type for " +request.getUri().toString() +
               " for sanitized content", ire);
-          return true;
+          return;
         }
       } else {
-        return true;
+        return;
       }
     } finally {
       if (!imageIsSafe) {
-        content.setContent("");
+        resp.setContent("");
       }
     }
   }
@@ -128,8 +121,8 @@ public class SanitizingRequestRewriter i
   /**
    * Sanitize a CSS file.
    */
-  private boolean rewriteProxiedCss(HttpRequest request, HttpResponse response,
-      MutableContent content, ContentRewriterFeature.Config rewriterFeature) {
+  private void rewriteProxiedCss(HttpRequest request, HttpResponseBuilder response,
+      ContentRewriterFeature.Config rewriterFeature) {
     String sanitized = "";
     try {
       String contentType = response.getHeader("Content-Type");
@@ -140,15 +133,13 @@ public class SanitizingRequestRewriter i
         SanitizingProxyingLinkRewriter cssImageRewriter = sanitizingProxyingLinkRewriterFactory
             .create(request.getGadget(), rewriterFeature, request
                 .getContainer(), "image/*", false, request.getIgnoreCache());
-        sanitized = cssSanitizer.sanitize(content.getContent(), request.getUri(), cssImportRewriter,
-            cssImageRewriter);
+        sanitized = cssSanitizer.sanitize(response.getContent(), request.getUri(),
+            cssImportRewriter, cssImageRewriter);
       }
-      
-      return true;
     } finally {
       // Set sanitized content in finally to ensure it is always cleared in
       // the case of errors
-      content.setContent(sanitized);
+      response.setContent(sanitized);
     }
   }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CaptureRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CaptureRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CaptureRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CaptureRewriter.java Tue Jun  1 19:28:42 2010
@@ -20,19 +20,17 @@ package org.apache.shindig.gadgets.rewri
 
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 
 /**
  * Utility rewriter for testing.
  */
-public class CaptureRewriter implements RequestRewriter, GadgetRewriter {
+public class CaptureRewriter implements ResponseRewriter, GadgetRewriter {
   private boolean rewroteView = false;
   private boolean rewroteResponse = false;
 
-  public boolean rewrite(HttpRequest request, HttpResponse original,
-      MutableContent content) {
+  public void rewrite(HttpRequest request, HttpResponseBuilder original) {
     rewroteResponse = true;
-    return true;
   }
 
   public boolean responseWasRewritten() {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriter.java Tue Jun  1 19:28:42 2010
@@ -23,6 +23,7 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
 import org.apache.shindig.gadgets.uri.ProxyUriManager;
 import org.w3c.dom.Element;
@@ -44,7 +45,7 @@ import com.google.inject.Inject;
 /**
  * Rewrite links to referenced content in a stylesheet
  */
-public class CssRequestRewriter implements RequestRewriter {
+public class CssRequestRewriter implements ResponseRewriter {
 
   private static final Logger logger = Logger.getLogger(CssRequestRewriter.class.getName());
 
@@ -60,20 +61,17 @@ public class CssRequestRewriter implemen
     this.rewriterFeatureFactory = rewriterFeatureFactory;
   }
 
-  public boolean rewrite(HttpRequest request, HttpResponse original,
-      MutableContent content) throws RewritingException {
+  public void rewrite(HttpRequest request, HttpResponseBuilder original) throws RewritingException {
     ContentRewriterFeature.Config config = rewriterFeatureFactory.get(request);
     if (!RewriterUtils.isCss(request, original)) {
-      return false;
+      return;
     }
     
-    String css = content.getContent();
+    String css = original.getContent();
     StringWriter sw = new StringWriter((css.length() * 110) / 100);
     rewrite(new StringReader(css), request.getUri(),
         new UriMaker(proxyUriManager, config), sw, false);
-    content.setContent(sw.toString());
-
-    return true;
+    original.setContent(sw.toString());
   }
 
   /**

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java Tue Jun  1 19:28:42 2010
@@ -25,7 +25,7 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.gadgets.uri.UriCommon.Param;
 
@@ -106,7 +106,7 @@ public final class DomWalker {
    * will be revisited after the entire DOM tree is walked.
    * The DOM tree is walked in depth-first order.
    */
-  public static class Rewriter implements GadgetRewriter, RequestRewriter {
+  public static class Rewriter implements GadgetRewriter, ResponseRewriter {
     private final List<Visitor> visitors;
     
     public Rewriter(List<Visitor> visitors) {
@@ -135,13 +135,12 @@ public final class DomWalker {
       rewrite(makeVisitors(gadget, gadget.getSpec().getUrl()), gadget, content);
     }
 
-    public boolean rewrite(HttpRequest request, HttpResponse original,
-        MutableContent content) throws RewritingException {
-      if (RewriterUtils.isHtml(request, original)) {
+    public void rewrite(HttpRequest request, HttpResponseBuilder builder)
+        throws RewritingException {
+      if (RewriterUtils.isHtml(request, builder)) {
         Gadget context = makeGadget(request);
-        return rewrite(makeVisitors(context, request.getGadget()), context, content);
+        rewrite(makeVisitors(context, request.getGadget()), context, builder);
       }
-      return false;
     }
     
     private boolean rewrite(List<Visitor> visitors, Gadget gadget, MutableContent content) 

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java Tue Jun  1 19:28:42 2010
@@ -25,6 +25,7 @@ import com.google.inject.Provides;
 import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 
+import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
 import org.apache.shindig.gadgets.render.OpenSocialI18NGadgetRewriter;
 import org.apache.shindig.gadgets.render.RenderingGadgetRewriter;
 import org.apache.shindig.gadgets.render.old.SanitizingGadgetRewriter;
@@ -57,7 +58,8 @@ public class RewriteModule extends Abstr
       SanitizingGadgetRewriter sanitizedRewriter,
       RenderingGadgetRewriter renderingRewriter,
       OpenSocialI18NGadgetRewriter i18nRewriter) {
-    return ImmutableList.of(pipelineRewriter, templateRewriter, optimizingRewriter, cajaRewriter, sanitizedRewriter, renderingRewriter, i18nRewriter);
+    return ImmutableList.of(pipelineRewriter, templateRewriter, optimizingRewriter,
+        cajaRewriter, sanitizedRewriter, renderingRewriter, i18nRewriter);
   }
 
   @Provides
@@ -68,20 +70,32 @@ public class RewriteModule extends Abstr
       CajaContentRewriter cajaRewriter) {
     return ImmutableList.of(optimizingRewriter, cajaRewriter);
   }
-
+  
+  // TODO: Clean this up. Ideally we would let the ResponseRewriterRegistry
+  // binding create the concrete object instance.
   @Provides
   @Singleton
-  protected List<RequestRewriter> provideRequestRewriters(
-      HTMLContentRewriter optimizingRewriter,
-      CssRequestRewriter cssRewriter,
-      SanitizingRequestRewriter sanitizedRewriter) {
-    return ImmutableList.of(optimizingRewriter, cssRewriter, sanitizedRewriter);
+  @Named("shindig.rewriters.response.pre-cache")
+  protected ResponseRewriterRegistry providePreCacheResponseRewritersRegistry(
+      GadgetHtmlParser parser,
+      @Named("shindig.rewriters.response.pre-cache") List<ResponseRewriter> preCached) {
+    return new DefaultResponseRewriterRegistry(preCached, parser);
   }
-  
+
   @Provides
   @Singleton
-  protected List<ResponseRewriter> provideResponseRewriters(
+  @Named("shindig.rewriters.response.pre-cache")
+  protected List<ResponseRewriter> providePreCacheResponseRewriters(
       BasicImageRewriter imageRewriter) {
     return ImmutableList.<ResponseRewriter>of(imageRewriter);
   }
+
+  @Provides
+  @Singleton
+  protected List<ResponseRewriter> provideResponseRewriters(
+      HTMLContentRewriter optimizingRewriter,
+      CssRequestRewriter cssRewriter,
+      SanitizingRequestRewriter sanitizedRewriter) {
+    return ImmutableList.of(optimizingRewriter, cssRewriter, sanitizedRewriter);
+  }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriterUtils.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriterUtils.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriterUtils.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriterUtils.java Tue Jun  1 19:28:42 2010
@@ -20,6 +20,7 @@ package org.apache.shindig.gadgets.rewri
 
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 
 /**
  * Various utility functions used by rewriters
@@ -31,16 +32,31 @@ public class RewriterUtils {
     String mimeType = getMimeType(request, original);
     return mimeType != null && (mimeType.contains("html"));
   }
+  
+  public static boolean isHtml(HttpRequest request, HttpResponseBuilder original) {
+    String mimeType = getMimeType(request, original);
+    return mimeType != null && (mimeType.contains("html"));
+  }
 
   public static boolean isCss(HttpRequest request, HttpResponse original) {
     String mimeType = getMimeType(request, original);
     return mimeType != null && mimeType.contains("css");
   }
+  
+  public static boolean isCss(HttpRequest request, HttpResponseBuilder original) {
+    String mimeType = getMimeType(request, original);
+    return mimeType != null && mimeType.contains("css");
+  }
 
   public static boolean isJavascript(HttpRequest request, HttpResponse original) {
     String mimeType = getMimeType(request, original);
     return mimeType != null && mimeType.contains("javascript");
   }
+  
+  public static boolean isJavascript(HttpRequest request, HttpResponseBuilder original) {
+    String mimeType = getMimeType(request, original);
+    return mimeType != null && mimeType.contains("javascript");
+  }
 
   public static String getMimeType(HttpRequest request, HttpResponse original) {
     String mimeType = request.getRewriteMimeType();
@@ -49,4 +65,12 @@ public class RewriterUtils {
     }
     return mimeType != null ? mimeType.toLowerCase() : null;
   }
+
+  public static String getMimeType(HttpRequest request, HttpResponseBuilder original) {
+    String mimeType = request.getRewriteMimeType();
+    if (mimeType == null) {
+      mimeType = original.getHeader("Content-Type");
+    }
+    return mimeType != null ? mimeType.toLowerCase() : null;
+  }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriter.java Tue Jun  1 19:28:42 2010
@@ -23,10 +23,10 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 import org.apache.shindig.gadgets.rewrite.RewriterUtils;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.gadgets.rewrite.old.LinkRewriter;
@@ -50,7 +50,7 @@ import com.google.inject.Inject;
 /**
  * Rewrite links to referenced content in a stylesheet
  */
-public class CssRequestRewriter implements RequestRewriter {
+public class CssRequestRewriter implements ResponseRewriter {
 
   private static final Logger logger = Logger.getLogger(CssRequestRewriter.class.getName());
 
@@ -67,20 +67,18 @@ public class CssRequestRewriter implemen
     this.proxyingLinkRewriterFactory = proxyingLinkRewriterFactory;
   }
 
-  public boolean rewrite(HttpRequest request, HttpResponse original,
-      MutableContent content) throws RewritingException {
-    if (!RewriterUtils.isCss(request, original)) {
-      return false;
+  public void rewrite(HttpRequest request, HttpResponseBuilder response)
+      throws RewritingException {
+    if (!RewriterUtils.isCss(request, response)) {
+      return;
     }
     ContentRewriterFeature.Config feature = rewriterFeatureFactory.get(request);
-    String css = content.getContent();
+    String css = response.getContent();
     StringWriter sw = new StringWriter((css.length() * 110) / 100);
     rewrite(new StringReader(css), request.getUri(),
         proxyingLinkRewriterFactory.create(request.getGadget(), feature,
             request.getContainer(), false, request.getIgnoreCache()), sw, false);
-    content.setContent(sw.toString());
-
-    return true;
+    response.setContent(sw.toString());
   }
 
   /**

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriter.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriter.java Tue Jun  1 19:28:42 2010
@@ -21,11 +21,11 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.common.xml.DomUtil;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
 import org.apache.shindig.gadgets.rewrite.GadgetRewriter;
 import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 import org.apache.shindig.gadgets.rewrite.RewriterUtils;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.gadgets.spec.View;
@@ -52,7 +52,7 @@ import com.google.inject.Inject;
  * - Moving all style into head and converting @imports into links
  * - Proxying referred content of images and embeds
  */
-public class HTMLContentRewriter implements GadgetRewriter, RequestRewriter {
+public class HTMLContentRewriter implements GadgetRewriter, ResponseRewriter {
   
   private final static String JS_MIME_TYPE = "text/javascript";
 
@@ -79,15 +79,12 @@ public class HTMLContentRewriter impleme
     this.proxyingLinkRewriterFactory = proxyingLinkRewriterFactory;
   }
 
-  public boolean rewrite(HttpRequest request, HttpResponse original,
-      MutableContent content) throws RewritingException {
-    if (RewriterUtils.isHtml(request, original)) {
+  public void rewrite(HttpRequest request, HttpResponseBuilder response) throws RewritingException {
+    if (RewriterUtils.isHtml(request, response)) {
       ContentRewriterFeature.Config feature = rewriterFeatureFactory.get(request);
-      return rewriteImpl(feature, request.getGadget(), request.getUri(), content,
+      rewriteImpl(feature, request.getGadget(), request.getUri(), response,
           request.getContainer(), false, request.getIgnoreCache());
     }
-    
-    return false;
   }
 
   public void rewrite(Gadget gadget, MutableContent content) throws RewritingException {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ConcatProxyServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ConcatProxyServlet.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ConcatProxyServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ConcatProxyServlet.java Tue Jun  1 19:28:42 2010
@@ -30,7 +30,7 @@ import org.apache.shindig.gadgets.Gadget
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.RequestPipeline;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.gadgets.uri.ConcatUriManager;
 import org.apache.shindig.gadgets.uri.UriCommon.Param;
@@ -63,7 +63,7 @@ public class ConcatProxyServlet extends 
 
   private RequestPipeline requestPipeline;
   private ConcatUriManager concatUriManager;
-  private RequestRewriterRegistry contentRewriterRegistry;
+  private ResponseRewriterRegistry contentRewriterRegistry;
 
   @Inject
   public void setRequestPipeline(RequestPipeline requestPipeline) {
@@ -76,7 +76,7 @@ public class ConcatProxyServlet extends 
   }
 
   @Inject
-  public void setContentRewriterRegistry(RequestRewriterRegistry contentRewriterRegistry) {
+  public void setContentRewriterRegistry(ResponseRewriterRegistry contentRewriterRegistry) {
     this.contentRewriterRegistry = contentRewriterRegistry;
   }
 

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java Tue Jun  1 19:28:42 2010
@@ -29,7 +29,7 @@ import org.apache.shindig.gadgets.http.H
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.RequestPipeline;
 import org.apache.shindig.gadgets.oauth.OAuthArguments;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.protocol.BaseRequestItem;
 import org.apache.shindig.protocol.Operation;
@@ -95,11 +95,11 @@ public class HttpRequestHandler {
   static final Set<String> BAD_HEADERS = ImmutableSet.of("HOST", "ACCEPT-ENCODING");
 
   private final RequestPipeline requestPipeline;
-  private final RequestRewriterRegistry contentRewriterRegistry;
+  private final ResponseRewriterRegistry contentRewriterRegistry;
 
   @Inject
   public HttpRequestHandler(RequestPipeline requestPipeline,
-      RequestRewriterRegistry contentRewriterRegistry) {
+      ResponseRewriterRegistry contentRewriterRegistry) {
     this.requestPipeline = requestPipeline;
     this.contentRewriterRegistry = contentRewriterRegistry;
   }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java Tue Jun  1 19:28:42 2010
@@ -36,7 +36,7 @@ import org.apache.shindig.gadgets.http.H
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.RequestPipeline;
 import org.apache.shindig.gadgets.oauth.OAuthArguments;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 
 import java.io.IOException;
@@ -68,11 +68,11 @@ public class MakeRequestHandler extends 
   public static final String AUTHZ_PARAM = "authz";
 
   private final RequestPipeline requestPipeline;
-  private final RequestRewriterRegistry contentRewriterRegistry;
+  private final ResponseRewriterRegistry contentRewriterRegistry;
 
   @Inject
   public MakeRequestHandler(RequestPipeline requestPipeline,
-      RequestRewriterRegistry contentRewriterRegistry) {
+      ResponseRewriterRegistry contentRewriterRegistry) {
     this.requestPipeline = requestPipeline;
     this.contentRewriterRegistry = contentRewriterRegistry;
   }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java Tue Jun  1 19:28:42 2010
@@ -31,7 +31,7 @@ import org.apache.shindig.gadgets.Locked
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.RequestPipeline;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.gadgets.uri.ProxyUriManager;
 
@@ -55,13 +55,13 @@ public class ProxyHandler extends ProxyB
   
   private final RequestPipeline requestPipeline;
   private final LockedDomainService lockedDomainService;
-  private final RequestRewriterRegistry contentRewriterRegistry;
+  private final ResponseRewriterRegistry contentRewriterRegistry;
   private final ProxyUriManager proxyUriManager;
 
   @Inject
   public ProxyHandler(RequestPipeline requestPipeline,
                       LockedDomainService lockedDomainService,
-                      RequestRewriterRegistry contentRewriterRegistry,
+                      ResponseRewriterRegistry contentRewriterRegistry,
                       ProxyUriManager proxyUriManager) {
     this.requestPipeline = requestPipeline;
     this.lockedDomainService = lockedDomainService;

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java Tue Jun  1 19:28:42 2010
@@ -30,8 +30,6 @@ import com.google.common.collect.Maps;
 import org.apache.shindig.auth.BasicSecurityToken;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.common.util.FakeTimeSource;
-import org.apache.shindig.common.util.TimeSource;
 import org.apache.shindig.gadgets.AuthType;
 import org.apache.shindig.gadgets.oauth.OAuthArguments;
 import org.apache.shindig.gadgets.spec.RequestAuthenticationInfo;
@@ -347,10 +345,6 @@ public class AbstractHttpCacheTest {
         .create();
     cache.map.put(key, response);
 
-    TimeSource fakeClock = new FakeTimeSource(expiration + 60L);
-
-    cache.setClock(fakeClock);
-
     // The cache itself still hold and return staled value, 
     // caller responsible to decide what to do about it 
     assertEquals(response, cache.removeResponse(request));

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/ProxyRendererTest.java Tue Jun  1 19:28:42 2010
@@ -226,11 +226,10 @@ public class ProxyRendererTest {
   @Test
   public void appendUserAgent() throws Exception {
     String expectedUA = USER_AGENT + " Shindig";
-    HttpRequest request = new HttpRequest(EXPECTED_PROXIED_HTML_HREF);
     HttpResponse response = new HttpResponse(PROXIED_HTML_CONTENT);
     pipeline.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, response);
     
-    String content = proxyRenderer.render(makeHrefGadget("none"));
+    proxyRenderer.render(makeHrefGadget("none"));
     String actualUA = pipeline.lastHttpRequest.getHeader("User-Agent");
     assertEquals(expectedUA, actualUA);
   }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java Tue Jun  1 19:28:42 2010
@@ -30,8 +30,7 @@ import org.apache.shindig.gadgets.parse.
 import org.apache.shindig.gadgets.parse.caja.CajaCssSanitizer;
 import org.apache.shindig.gadgets.rewrite.RewriterTestBase;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 import org.apache.shindig.gadgets.uri.PassthruManager;
 import org.junit.Test;
 
@@ -43,17 +42,18 @@ public class SanitizingRequestRewriterTe
 
   private String rewrite(HttpRequest request, HttpResponse response) throws Exception {
     request.setSanitizationRequested(true);
-    RequestRewriter rewriter = createRewriter(Collections.<String>emptySet(),
+    ResponseRewriter rewriter = createRewriter(Collections.<String>emptySet(),
         Collections.<String>emptySet());
 
-    MutableContent mc = new MutableContent(parser, response);
-    if (!rewriter.rewrite(request, response, mc)) {
+    HttpResponseBuilder hrb = new HttpResponseBuilder(parser, response);
+    rewriter.rewrite(request, hrb);
+    if (hrb.getNumChanges() == 0) {
       return null;
     }
-    return mc.getContent();
+    return hrb.getContent();
   }
 
-  private RequestRewriter createRewriter(Set<String> tags, Set<String> attributes) {
+  private ResponseRewriter createRewriter(Set<String> tags, Set<String> attributes) {
     ContentRewriterFeature.Factory rewriterFeatureFactory =
         new ContentRewriterFeature.Factory(null,
           new ContentRewriterFeature.DefaultConfig(

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriterTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/old/SanitizingRequestRewriterTest.java Tue Jun  1 19:28:42 2010
@@ -31,8 +31,7 @@ import org.apache.shindig.gadgets.parse.
 import org.apache.shindig.gadgets.render.old.DefaultSanitizingProxyingLinkRewriterFactory;
 import org.apache.shindig.gadgets.render.old.SanitizingRequestRewriter;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
 import org.apache.shindig.gadgets.rewrite.old.BaseRewriterTestCase;
 import org.junit.Test;
 
@@ -44,17 +43,18 @@ public class SanitizingRequestRewriterTe
 
   private String rewrite(HttpRequest request, HttpResponse response) throws Exception {
     request.setSanitizationRequested(true);
-    RequestRewriter rewriter = createRewriter(Collections.<String>emptySet(),
+    ResponseRewriter rewriter = createRewriter(Collections.<String>emptySet(),
         Collections.<String>emptySet());
 
-    MutableContent mc = new MutableContent(parser, response);
-    if (!rewriter.rewrite(request, response, mc)) {
+    HttpResponseBuilder hrb = new HttpResponseBuilder(parser, response);
+    rewriter.rewrite(request, hrb);
+    if (hrb.getNumChanges() == 0) {
       return null;
     }
-    return mc.getContent();
+    return hrb.getContent();
   }
 
-  private RequestRewriter createRewriter(Set<String> tags, Set<String> attributes) {
+  private ResponseRewriter createRewriter(Set<String> tags, Set<String> attributes) {
     ContentRewriterFeature.Factory rewriterFeatureFactory =
         new ContentRewriterFeature.Factory(null,
           new ContentRewriterFeature.DefaultConfig(".*", "", "HTTP", "embed,img,script,link,style", "false", "false"));

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriterTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssRequestRewriterTest.java Tue Jun  1 19:28:42 2010
@@ -18,13 +18,11 @@
 package org.apache.shindig.gadgets.rewrite;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
 import org.apache.shindig.gadgets.uri.PassthruManager;
@@ -89,14 +87,12 @@ public class CssRequestRewriterTest exte
     request.setMethod("GET");
     request.setGadget(SPEC_URL);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
-
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+        .setResponseString(content);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -110,14 +106,12 @@ public class CssRequestRewriterTest exte
     request.setMethod("GET");
     request.setGadget(SPEC_URL);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
-
-    MutableContent mc = new MutableContent(null, content);
-    rewriterNoOverrideExpires.rewrite(request, response, mc);
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
+    rewriterNoOverrideExpires.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -132,14 +126,12 @@ public class CssRequestRewriterTest exte
     request.setGadget(SPEC_URL);
     request.setIgnoreCache(true);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
-
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -158,33 +150,33 @@ public class CssRequestRewriterTest exte
     request.setGadget(SPEC_URL);
     request.setContainer(MOCK_CONTAINER);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
 
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
   public void testNoRewriteUnknownMimeType() throws Exception {
-    MutableContent mc = control.createMock(MutableContent.class); 
     HttpRequest req = control.createMock(HttpRequest.class);
     EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
     control.replay();
-    assertFalse(rewriter.rewrite(req, fakeResponse, mc));
+    int changesBefore = fakeResponse.getNumChanges();
+    rewriter.rewrite(req, fakeResponse);
+    assertEquals(changesBefore, fakeResponse.getNumChanges());
     control.verify();
   }
 
   private void validateRewritten(String content, Uri base, String expected) throws Exception {
-    MutableContent mc = new MutableContent(null, content);
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css");
+    response.setContent(content);
     HttpRequest request = new HttpRequest(base);
-    rewriter.rewrite(request,
-        new HttpResponseBuilder().setHeader("Content-Type", "text/css").create(), mc);
+    rewriter.rewrite(request, response);
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   private void validateRewritten(String content, String expected) throws Exception {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java Tue Jun  1 19:28:42 2010
@@ -38,16 +38,16 @@ import com.google.common.collect.Lists;
 public class DefaultContentRewriterRegistryTest extends BaseRewriterTestCase {
   private static final Uri SPEC_URL = Uri.parse("http://example.org/gadget.xml");
   private List<CaptureRewriter> rewriters;
-  private List<RequestRewriter> contentRewriters;
-  private RequestRewriterRegistry registry;
+  private List<ResponseRewriter> contentRewriters;
+  private ResponseRewriterRegistry registry;
 
   @Before
   @Override
   public void setUp() throws Exception {
     super.setUp();
     rewriters = Lists.newArrayList(new CaptureRewriter(), new CaptureRewriter());
-    contentRewriters = Lists.<RequestRewriter>newArrayList(rewriters);
-    registry = new DefaultRequestRewriterRegistry(contentRewriters, parser);
+    contentRewriters = Lists.<ResponseRewriter>newArrayList(rewriters);
+    registry = new DefaultResponseRewriterRegistry(contentRewriters, parser);
   }
 
   @Test
@@ -72,18 +72,18 @@ public class DefaultContentRewriterRegis
    */
   @Test
   public void testNoDecodeHttpResponseForUnRewriteableMimeTypes() throws Exception {
-    List<RequestRewriter> rewriters = Lists.newArrayList();
+    List<ResponseRewriter> rewriters = Lists.newArrayList();
     rewriters.add(injector.getInstance(HTMLContentRewriter.class));
     rewriters.add(injector.getInstance(CssRequestRewriter.class));
-    registry = new DefaultRequestRewriterRegistry(rewriters, parser);
+    registry = new DefaultResponseRewriterRegistry(rewriters, parser);
 
     HttpRequest req = control.createMock(HttpRequest.class);
     EasyMock.expect(req.getRewriteMimeType()).andStubReturn("unknown");
 
     control.replay();
-    HttpResponse rewritten = registry.rewriteHttpResponse(req, fakeResponse);
+    HttpResponse rewritten = registry.rewriteHttpResponse(req, fakeResponse.create());
     // Assert that response is untouched
-    assertSame(rewritten, fakeResponse);
+    assertSame(rewritten, fakeResponse.create());
     control.verify();
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/RewriterTestBase.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/RewriterTestBase.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/RewriterTestBase.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/RewriterTestBase.java Tue Jun  1 19:28:42 2010
@@ -65,7 +65,7 @@ public abstract class RewriterTestBase {
   protected ContentRewriterFeature.Factory rewriterFeatureFactory;
   protected GadgetHtmlParser parser;
   protected Injector injector;
-  protected HttpResponse fakeResponse;
+  protected HttpResponseBuilder fakeResponse;
   protected IMocksControl control;
 
   @Before
@@ -78,7 +78,7 @@ public abstract class RewriterTestBase {
     injector = Guice.createInjector(getParseModule(), new PropertiesModule(), new TestModule());
     parser = injector.getInstance(GadgetHtmlParser.class);
     fakeResponse = new HttpResponseBuilder().setHeader("Content-Type", "unknown")
-        .setResponse(new byte[]{ (byte)0xFE, (byte)0xFF}).create();
+        .setResponse(new byte[]{ (byte)0xFE, (byte)0xFF});
     control = EasyMock.createControl();
   }
   

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/BaseRewriterTestCase.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/BaseRewriterTestCase.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/BaseRewriterTestCase.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/BaseRewriterTestCase.java Tue Jun  1 19:28:42 2010
@@ -76,7 +76,7 @@ public abstract class BaseRewriterTestCa
   protected LinkRewriter defaultLinkRewriterNoCacheAndDebug;
   protected GadgetHtmlParser parser;
   protected Injector injector;
-  protected HttpResponse fakeResponse;
+  protected HttpResponseBuilder fakeResponse;
   protected ContentRewriterUris rewriterUris;
   protected IMocksControl control;
   protected ContentRewriterUris defaultContainerRewriterUris;
@@ -107,7 +107,7 @@ public abstract class BaseRewriterTestCa
     injector = Guice.createInjector(getParseModule(), new PropertiesModule(), new TestModule());
     parser = injector.getInstance(GadgetHtmlParser.class);
     fakeResponse = new HttpResponseBuilder().setHeader("Content-Type", "unknown")
-        .setResponse(new byte[]{ (byte)0xFE, (byte)0xFF}).create();
+        .setResponse(new byte[]{ (byte)0xFE, (byte)0xFF});
 
     ContainerConfig config = new AbstractContainerConfig() {
       @Override
@@ -287,7 +287,6 @@ public abstract class BaseRewriterTestCa
     protected void configure() {
       bind(RequestPipeline.class).toInstance(new RequestPipeline() {
         public HttpResponse execute(HttpRequest request) { return null; }
-        public void normalizeProtocol(HttpRequest request) throws GadgetException {}
       });
 
       bind(GadgetSpecFactory.class).toInstance(new GadgetSpecFactory() {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriterTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/CssRequestRewriterTest.java Tue Jun  1 19:28:42 2010
@@ -18,17 +18,14 @@
 package org.apache.shindig.gadgets.rewrite.old;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.gadgets.http.HttpRequest;
-import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
 import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
 import org.apache.shindig.gadgets.rewrite.old.DefaultProxyingLinkRewriterFactory;
 import org.apache.shindig.gadgets.rewrite.old.HTMLContentRewriter;
 import org.apache.shindig.gadgets.rewrite.old.LinkRewriter;
@@ -81,14 +78,13 @@ public class CssRequestRewriterTest exte
     request.setMethod("GET");
     request.setGadget(SPEC_URL);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
 
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -102,14 +98,13 @@ public class CssRequestRewriterTest exte
     request.setMethod("GET");
     request.setGadget(SPEC_URL);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
 
-    MutableContent mc = new MutableContent(null, content);
-    rewriterNoOverrideExpires.rewrite(request, response, mc);
+    rewriterNoOverrideExpires.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -124,14 +119,13 @@ public class CssRequestRewriterTest exte
     request.setGadget(SPEC_URL);
     request.setIgnoreCache(true);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+      .setResponseString(content);
 
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
@@ -142,39 +136,38 @@ public class CssRequestRewriterTest exte
         getResourceAsStream("org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css"));
     expected = replaceDefaultWithMockServer(expected);
     
-    HttpRequest request = new HttpRequest(Uri.parse("http://www.example.org/path/rewritebasic.css"));
+    HttpRequest request =
+        new HttpRequest(Uri.parse("http://www.example.org/path/rewritebasic.css"));
     request.setMethod("GET");
     request.setGadget(SPEC_URL);
     request.setContainer(MOCK_CONTAINER);
 
-    HttpResponse response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
-      .setResponseString(content).create();
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css")
+        .setResponseString(content);
 
-    MutableContent mc = new MutableContent(null, content);
-    rewriter.rewrite(request, response, mc);
+    rewriter.rewrite(request, response);
 
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   @Test
   public void testNoRewriteUnknownMimeType() throws Exception {
-    MutableContent mc = control.createMock(MutableContent.class); 
     HttpRequest req = control.createMock(HttpRequest.class);
     EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
     control.replay();
-    assertFalse(rewriter.rewrite(req, fakeResponse, mc));
+    rewriter.rewrite(req, fakeResponse);
     control.verify();
   }
 
   private void validateRewritten(String content, Uri base,
       LinkRewriter linkRewriter, String expected) throws Exception{
-    MutableContent mc = new MutableContent(null, content);
     HttpRequest request = new HttpRequest(base);
-    rewriter.rewrite(request,
-        new HttpResponseBuilder().setHeader("Content-Type", "text/css").create(), mc);
+    HttpResponseBuilder response = new HttpResponseBuilder().setHeader("Content-Type", "text/css");
+    response.setContent(content);
+    rewriter.rewrite(request, response);
     assertEquals(StringUtils.deleteWhitespace(expected),
-        StringUtils.deleteWhitespace(mc.getContent()));
+        StringUtils.deleteWhitespace(response.getContent()));
   }
 
   private void validateRewritten(String content, String expected) throws Exception {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriterTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/old/HTMLContentRewriterTest.java Tue Jun  1 19:28:42 2010
@@ -403,11 +403,10 @@ public class HTMLContentRewriterTest ext
 
   @Test
   public void testNoRewriteUnknownMimeType() throws Exception {
-    MutableContent mc = control.createMock(MutableContent.class); 
     HttpRequest req = control.createMock(HttpRequest.class);
     EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
     control.replay();
-    assertFalse(rewriter.rewrite(req, fakeResponse, mc));
+    rewriter.rewrite(req, fakeResponse);
     control.verify();
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java Tue Jun  1 19:28:42 2010
@@ -38,9 +38,9 @@ import org.apache.shindig.gadgets.http.H
 import org.apache.shindig.gadgets.http.RequestPipeline;
 import org.apache.shindig.gadgets.oauth.OAuthArguments;
 import org.apache.shindig.gadgets.rewrite.CaptureRewriter;
-import org.apache.shindig.gadgets.rewrite.DefaultRequestRewriterRegistry;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.DefaultResponseRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 import org.apache.shindig.protocol.DefaultHandlerRegistry;
 import org.apache.shindig.protocol.HandlerExecutionListener;
 import org.apache.shindig.protocol.HandlerRegistry;
@@ -73,8 +73,8 @@ public class HttpRequestHandlerTest exte
 
   private final RequestPipeline pipeline = mock(RequestPipeline.class);
   private final CaptureRewriter rewriter = new CaptureRewriter();
-  private final RequestRewriterRegistry rewriterRegistry
-      = new DefaultRequestRewriterRegistry(Arrays.<RequestRewriter>asList(rewriter), null);
+  private final ResponseRewriterRegistry rewriterRegistry
+      = new DefaultResponseRewriterRegistry(Arrays.<ResponseRewriter>asList(rewriter), null);
 
   private HandlerRegistry registry;
 

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java Tue Jun  1 19:28:42 2010
@@ -348,6 +348,6 @@ public class ProxyHandlerTest extends Se
   @Test
   public void testMimeMatchVarySupport() throws Exception {
     // We use CaptureRewrite which always rewrite - always set encoding
-    expectMime("image/*", "image/gif", "image/gif; charset=UTF-8");
+    expectMime("image/*", "image/gif", "image/gif");
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java?rev=950226&r1=950225&r2=950226&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java Tue Jun  1 19:28:42 2010
@@ -23,9 +23,9 @@ import org.apache.shindig.common.servlet
 import org.apache.shindig.gadgets.LockedDomainService;
 import org.apache.shindig.gadgets.http.RequestPipeline;
 import org.apache.shindig.gadgets.rewrite.CaptureRewriter;
-import org.apache.shindig.gadgets.rewrite.DefaultRequestRewriterRegistry;
-import org.apache.shindig.gadgets.rewrite.RequestRewriter;
-import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.DefaultResponseRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
 
 import java.util.Arrays;
 
@@ -41,8 +41,8 @@ import javax.servlet.http.HttpServletRes
 public abstract class ServletTestFixture extends EasyMockTestCase {
   public final RequestPipeline pipeline = mock(RequestPipeline.class);
   public final CaptureRewriter rewriter = new CaptureRewriter();
-  public final RequestRewriterRegistry rewriterRegistry
-      = new DefaultRequestRewriterRegistry(Arrays.<RequestRewriter>asList(rewriter), null);
+  public final ResponseRewriterRegistry rewriterRegistry
+      = new DefaultResponseRewriterRegistry(Arrays.<ResponseRewriter>asList(rewriter), null);
   public final HttpServletRequest request = mock(HttpServletRequest.class);
   public final HttpServletResponse response = mock(HttpServletResponse.class);
   public final HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(response);