You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by jo...@gmail.com on 2010/05/25 01:56:00 UTC

Refactor ImageRewriter as HttpResponseRewriter (issue1276042)

Reviewers: shindig.remailer_gmail.com, zhoresh, jtarrio,

Description:
Introduces new interface HttpResponseRewriter, and for the moment - as a
proof-of-concept and for functional backward compatibility - implements
only BasicImageRewriter in terms of this interface.

HttpResponseRewriter's API parallels that of GadgetRewriter:
void rewrite(ContextObject in, MutableContent out);

Specifically:
void rewrite(HttpRequest in, HttpResponseBuilder out);

This change thus utilizes the HttpResponseBuilder-as-MutableContent CL
submitted a few weeks ago.

Additional notes:
* [Basic]ImageRewriter simply modifies an HttpResponse. Its
implementation is updated in this CL to reflect the same.
* HttpResponseRegistry is introduced, with default binding to
BasicImageRewriter. The registry's rewriters are executed at the same
place as ImageRewriter previously was - in DefaultRequestPipeline, after
fetch and before caching.
* HttpResponseBuilder optimization implemented to return the "source"
HttpResponse object from which it was created when no changes were made
to its data. This avoids pointless object creation and data copying,
maintaining ImageRewriter's performance in such cases.

This CL is transitional, as its goals are to move to the following:
* Ability to perform image rewriting steps independently, in separate
rewriting passes (resizing, optimization, downsampling, format
conversion, and so on).
* Situation in which all RequestRewriters are made into
ResponseRewriters, removing one Rewriter type.
* Ability to precisely define the caching characteristics of
[Response]Rewriters, of any type.

Please review this at http://codereview.appspot.com/1276042/show

Affected files:
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponseBuilder.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DefaultResponseRewriterRegistry.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ResponseRewriter.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ResponseRewriterRegistry.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BMPOptimizer.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BasicImageRewriter.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/JPEGOptimizer.java
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/PNGOptimizer.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpFetcherTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultInvalidationServiceTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseBuilderTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/BMPOptimizerTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/ImageRewriterTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/JPEGOptimizerTest.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/PNGOptimizerTest.java