Attached?

On Tue, Aug 26, 2008 at 3:11 PM, John Hjelmstad <[EMAIL PROTECTED]> wrote:

> Strange.. the test (AbstractHttpCacheTest) either passed or for some reason
> didn't run in my Maven build, so I failed to catch this.
> In looking to fix this bug, I ran across some double-writing behavior in
> AbstractHttpCache. I've fashioned the attached diff in an effort to resolve
> this. Could you, Louis, and anyone else who's interested take a look at
> this? Behavior now appears to be as intended, without double-rewriting,
> though I'd really like to ensure I'm not missing whether I'm modifying any
> subtle previous semantics.
>
> Thanks,
> John
>
>
> On Tue, Aug 26, 2008 at 12:12 AM, Kevin Brown <[EMAIL PROTECTED]> wrote:
>
>> On Mon, Aug 25, 2008 at 11:17 PM, John Hjelmstad <[EMAIL PROTECTED]>
>> wrote:
>>
>> > Hey Kevin:
>> > I'm a little confused here... the AbstractHttpCache changes simply sub
>> in
>> > ContentRewriterRegistry for the singleton ContentRewriter, and I added a
>> > test for AbstractHttpCache ensuring precisely what you're asking for.
>> (?)
>>
>>
>> This code always returns null:
>>
>> */**
>>   * Rewrite the content
>>   * @return true if rewritten content was generated
>>   */*
>>  *protected* HttpResponse rewrite(HttpRequest request, HttpResponse
>> response) {
>>     *// TODO - Make this sensitive to custom rewriting rules
>> *    *if* (response.getRewritten() == *null* &&
>>         rewriterRegistry != *null*) {
>>      HttpResponse rewritten = response;
>>      *for* (ContentRewriter rewriter : rewriterRegistry.getRewriters()) {
>>        rewritten = rewriter.rewrite(request, rewritten);
>>      }
>>      *if* (response.getRewritten() != *null*) {
>>        *return* response;
>>      }
>>    }
>>     *return* *null*;
>>   }
>>
>>
>>
>> >
>> >
>> > John
>> >
>> > On Mon, Aug 25, 2008 at 10:25 PM, Kevin Brown <[EMAIL PROTECTED]> wrote:
>> >
>> > > The changes to AbstractHttpCache bypass rewriting entirely, spending a
>> > lot
>> > > of effort to do nothing. You should add some tests to verify that
>> > rewriting
>> > > is actually performed if you're changing this code.
>> > >
>> > > On Mon, Aug 25, 2008 at 7:45 PM, <[EMAIL PROTECTED]> wrote:
>> > >
>> > > > Author: johnh
>> > > > Date: Mon Aug 25 19:45:55 2008
>> > > > New Revision: 688943
>> > > >
>> > > > URL: http://svn.apache.org/viewvc?rev=688943&view=rev
>> > > > Log:
>> > > > Modularization of ContentRewriter functionality.
>> > > >
>> > > > Rather than a single ContentRewriter being injected into the
>> > appropriate
>> > > > code paths, a ContentRewriterRegistry
>> > > > is injected instead, enabling a list of ContentRewriters rather than
>> > only
>> > > > one.
>> > > >
>> > > > By default, BasicContentRewriterRegistry is added, whose default
>> > > > constructor has a (pre-existing) ContentRewriter
>> > > > instance injected into it, maintaining exact rewriting and execution
>> > > > semantics.
>> > > >
>> > > > Rewriting code in HttpResponse and HttpRequest has been removed in
>> > favor
>> > > of
>> > > > method-injection of ContentRewriterRegistry
>> > > > into AbstractHttpCache, cleaning up code a bit. New test
>> > > > AbstractHttpCacheTest verifies proper rewriting behavior,
>> > > > including injection along the way.
>> > > >
>> > > >
>> > > >
>> > > > Added:
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistry.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterRegistry.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistryTest.java
>> > > > Modified:
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpRequest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicGadgetSpecFactoryTest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicMessageBundleFactoryTest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetTestFixture.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
>> > > >
>> > > >
>> > >
>> >
>>  
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -21,7 +21,6 @@
>> > > >  import org.apache.shindig.gadgets.spec.LocaleSpec;
>> > > >  import org.apache.shindig.gadgets.spec.MessageBundle;
>> > > >
>> > > > -import java.util.List;
>> > > >  import java.util.Locale;
>> > > >  import java.net.URI;
>> > > >
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -20,19 +20,18 @@
>> > > >
>> > > >  import org.apache.shindig.common.cache.Cache;
>> > > >  import org.apache.shindig.common.cache.CacheProvider;
>> > > > -import org.apache.shindig.common.cache.LruCache;
>> > > >  import org.apache.shindig.common.uri.Uri;
>> > > >  import org.apache.shindig.gadgets.http.HttpFetcher;
>> > > >  import org.apache.shindig.gadgets.http.HttpRequest;
>> > > >  import org.apache.shindig.gadgets.http.HttpResponse;
>> > > >  import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > > +import org.apache.shindig.gadgets.rewrite.ContentRewriterRegistry;
>> > > >  import org.apache.shindig.gadgets.spec.GadgetSpec;
>> > > >  import org.apache.shindig.gadgets.spec.View;
>> > > >
>> > > >  import com.google.inject.Inject;
>> > > >  import com.google.inject.Singleton;
>> > > >  import com.google.inject.name.Named;
>> > > > -import com.sun.jmx.remote.util.CacheMap;
>> > > >
>> > > >  import java.net.URI;
>> > > >  import java.util.ArrayList;
>> > > > @@ -53,7 +52,7 @@
>> > > >   private static final Logger logger =
>> > > > Logger.getLogger(BasicGadgetSpecFactory.class.getName());
>> > > >
>> > > >   private final HttpFetcher fetcher;
>> > > > -  private final ContentRewriter rewriter;
>> > > > +  private final ContentRewriterRegistry rewriterRegistry;
>> > > >   private final Executor executor;
>> > > >   private final long minTtl;
>> > > >   private final long maxTtl;
>> > > > @@ -148,8 +147,12 @@
>> > > >           throw new
>> > > > GadgetException(GadgetException.Code.FAILED_TO_RETRIEVE_CONTENT,
>> > > >                                     "Unable to retrieve remote
>> gadget
>> > > > content.");
>> > > >         }
>> > > > -        if (rewriter != null) {
>> > > > -          v.setRewrittenContent(rewriter.rewriteGadgetView(spec,
>> > > > v.getContent(), "text/html"));
>> > > > +        if (rewriterRegistry != null) {
>> > > > +          String content = v.getContent();
>> > > > +          for (ContentRewriter rewriter :
>> > > rewriterRegistry.getRewriters())
>> > > > {
>> > > > +            content = rewriter.rewriteGadgetView(spec, content,
>> > > > "text/html");
>> > > > +          }
>> > > > +          v.setRewrittenContent(content);
>> > > >         }
>> > > >       }
>> > > >     }
>> > > > @@ -170,13 +173,13 @@
>> > > >   @Inject
>> > > >   public BasicGadgetSpecFactory(HttpFetcher fetcher,
>> > > >                                 CacheProvider cacheProvider,
>> > > > -                                ContentRewriter rewriter,
>> > > > +                                ContentRewriterRegistry
>> > > rewriterRegistry,
>> > > >                                 Executor executor,
>> > > >
>> > > > @Named("shindig.gadget-spec.cache.capacity")int
>> > gadgetSpecCacheCapacity,
>> > > >
>> > > > @Named("shindig.gadget-spec.cache.minTTL")long minTtl,
>> > > >
>> > > > @Named("shindig.gadget-spec.cache.maxTTL")long maxTtl) {
>> > > >     this.fetcher = fetcher;
>> > > > -    this.rewriter = rewriter;
>> > > > +    this.rewriterRegistry = rewriterRegistry;
>> > > >     this.executor = executor;
>> > > >     this.cache = cacheProvider.createCache(gadgetSpecCacheCapacity);
>> > > >     this.minTtl = minTtl;
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -25,7 +25,6 @@
>> > > >  import org.apache.shindig.gadgets.spec.Auth;
>> > > >  import org.apache.shindig.gadgets.spec.Feature;
>> > > >  import org.apache.shindig.gadgets.spec.GadgetSpec;
>> > > > -import org.apache.shindig.gadgets.spec.LocaleSpec;
>> > > >  import org.apache.shindig.gadgets.spec.MessageBundle;
>> > > >  import org.apache.shindig.gadgets.spec.Preload;
>> > > >
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -17,6 +17,11 @@
>> > > >  */
>> > > >  package org.apache.shindig.gadgets.http;
>> > > >
>> > > > +import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > > +import org.apache.shindig.gadgets.rewrite.ContentRewriterRegistry;
>> > > > +
>> > > > +import com.google.inject.Inject;
>> > > > +
>> > > >  /**
>> > > >  * Base class for content caches. Defines cache expiration rules and
>> > > >  * and restrictions on allowed content. Also enforces rewriting
>> > > > @@ -24,6 +29,13 @@
>> > > >  */
>> > > >  public abstract class AbstractHttpCache implements HttpCache {
>> > > >
>> > > > +  private ContentRewriterRegistry rewriterRegistry;
>> > > > +
>> > > > +  @Inject
>> > > > +  public void setRewriterRegistry(ContentRewriterRegistry registry)
>> {
>> > > > +    rewriterRegistry = registry;
>> > > > +  }
>> > > > +
>> > > >   public final HttpResponse getResponse(HttpCacheKey key,
>> HttpRequest
>> > > > request) {
>> > > >     if (key.isCacheable()) {
>> > > >       String keyString = key.toString();
>> > > > @@ -108,7 +120,7 @@
>> > > >
>> > > >     // Return the rewritten version if requested
>> > > >     if (!request.getIgnoreCache() &&
>> > > > -        request.getContentRewriter() != null &&
>> > > > +        rewriterRegistry != null &&
>> > > >         response.getRewritten() != null &&
>> > > >         response.getRewritten().getContentLength() > 0) {
>> > > >       return response.getRewritten();
>> > > > @@ -122,8 +134,15 @@
>> > > >    */
>> > > >   protected HttpResponse rewrite(HttpRequest request, HttpResponse
>> > > > response) {
>> > > >     // TODO - Make this sensitive to custom rewriting rules
>> > > > -    if (response.getRewritten() == null &&
>> > request.getContentRewriter()
>> > > !=
>> > > > null) {
>> > > > -      return request.getContentRewriter().rewrite(request,
>> response);
>> > > > +    if (response.getRewritten() == null &&
>> > > > +        rewriterRegistry != null) {
>> > > > +      HttpResponse rewritten = response;
>> > > > +      for (ContentRewriter rewriter :
>> rewriterRegistry.getRewriters())
>> > {
>> > > > +        rewritten = rewriter.rewrite(request, rewritten);
>> > > > +      }
>> > > > +      if (response.getRewritten() != null) {
>> > > > +        return response;
>> > > > +      }
>> > > >     }
>> > > >     return null;
>> > > >   }
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -19,7 +19,6 @@
>> > > >
>> > > >  import org.apache.shindig.common.cache.Cache;
>> > > >  import org.apache.shindig.common.cache.CacheProvider;
>> > > > -import org.apache.shindig.common.cache.LruCache;
>> > > >
>> > > >  import com.google.inject.Inject;
>> > > >  import com.google.inject.name.Named;
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpRequest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpRequest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpRequest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpRequest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -25,7 +25,6 @@
>> > > >  import org.apache.shindig.common.ContainerConfig;
>> > > >  import org.apache.shindig.common.SecurityToken;
>> > > >  import org.apache.shindig.common.uri.Uri;
>> > > > -import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > >
>> > > >  import java.io.ByteArrayInputStream;
>> > > >  import java.io.IOException;
>> > > > @@ -64,8 +63,6 @@
>> > > >   private boolean signOwner = true;
>> > > >   private boolean signViewer = true;
>> > > >
>> > > > -  // TODO: Remove this when new rewriting infrastructure is in
>> place.
>> > > > -  private ContentRewriter contentRewriter;
>> > > >   private String rewriteMimeType;
>> > > >
>> > > >   /**
>> > > > @@ -90,7 +87,6 @@
>> > > >     securityToken = request.securityToken;
>> > > >     signOwner = request.signOwner;
>> > > >     signViewer = request.signViewer;
>> > > > -    contentRewriter = request.contentRewriter;
>> > > >     rewriteMimeType = request.rewriteMimeType;
>> > > >   }
>> > > >
>> > > > @@ -241,15 +237,6 @@
>> > > >   }
>> > > >
>> > > >   /**
>> > > > -   * @param contentRewriter The rewriter to use for the object
>> > retrieved
>> > > > by this request.
>> > > > -   * TODO: Move this to new rewriting facility.
>> > > > -   */
>> > > > -  public HttpRequest setContentRewriter(ContentRewriter
>> > contentRewriter)
>> > > {
>> > > > -    this.contentRewriter = contentRewriter;
>> > > > -    return this;
>> > > > -  }
>> > > > -
>> > > > -  /**
>> > > >    * @param rewriteMimeType The assumed content type of the response
>> to
>> > > be
>> > > > rewritten. Overrides
>> > > >    * any values set in the Content-Type response header.
>> > > >    *
>> > > > @@ -391,13 +378,6 @@
>> > > >   }
>> > > >
>> > > >   /**
>> > > > -   * @return The rewriter to be used on any response objects.
>> > > > -   */
>> > > > -  public ContentRewriter getContentRewriter() {
>> > > > -    return contentRewriter;
>> > > > -  }
>> > > > -
>> > > > -  /**
>> > > >    * @return The content type to assume when rewriting.
>> > > >    *
>> > > >    * TODO: Move this to new rewriting facility.
>> > > >
>> > > > Added:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistry.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistry.java?rev=688943&view=auto
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistry.java
>> > > > (added)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistry.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -0,0 +1,53 @@
>> > > > +/*
>> > > > + * Licensed to the Apache Software Foundation (ASF) under one
>> > > > + * or more contributor license agreements. See the NOTICE file
>> > > > + * distributed with this work for additional information
>> > > > + * regarding copyright ownership. The ASF licenses this file
>> > > > + * to you under the Apache License, Version 2.0 (the
>> > > > + * "License"); you may not use this file except in compliance
>> > > > + * with the License. You may obtain a copy of the License at
>> > > > + *
>> > > > + *     http://www.apache.org/licenses/LICENSE-2.0
>> > > > + *
>> > > > + * Unless required by applicable law or agreed to in writing,
>> > > > + * software distributed under the License is distributed on an
>> > > > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > > > + * KIND, either express or implied. See the License for the
>> > > > + * specific language governing permissions and limitations under
>> the
>> > > > License.
>> > > > + */
>> > > > +package org.apache.shindig.gadgets.rewrite;
>> > > > +
>> > > > +import com.google.inject.Inject;
>> > > > +
>> > > > +import java.util.Collections;
>> > > > +import java.util.LinkedList;
>> > > > +import java.util.List;
>> > > > +
>> > > > +/**
>> > > > + * Registry into which is injected a single rewriter, which
>> > > > + * bootstraps the rewriters list. This enables modularization
>> > > > + * of [EMAIL PROTECTED] ContentRewriter} instances without changing
>> > > > + * Guice injection bindings. The class also provides a method
>> > > > + * for manipulating a simple list of rewriters.
>> > > > + */
>> > > > +public class BasicContentRewriterRegistry implements
>> > > > ContentRewriterRegistry {
>> > > > +  private final List<ContentRewriter> rewriters;
>> > > > +
>> > > > +  @Inject
>> > > > +  public BasicContentRewriterRegistry(ContentRewriter
>> firstRewriter) {
>> > > > +    rewriters = new LinkedList<ContentRewriter>();
>> > > > +    appendRewriter(firstRewriter);
>> > > > +  }
>> > > > +
>> > > > +  /** [EMAIL PROTECTED] */
>> > > > +  public List<ContentRewriter> getRewriters() {
>> > > > +    return Collections.unmodifiableList(rewriters);
>> > > > +  }
>> > > > +
>> > > > +  public void appendRewriter(ContentRewriter rewriter) {
>> > > > +    if (rewriter != null) {
>> > > > +      rewriters.add(rewriter);
>> > > > +    }
>> > > > +  }
>> > > > +
>> > > > +}
>> > > >
>> > > > Added:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterRegistry.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterRegistry.java?rev=688943&view=auto
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterRegistry.java
>> > > > (added)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterRegistry.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -0,0 +1,30 @@
>> > > > +/*
>> > > > + * Licensed to the Apache Software Foundation (ASF) under one
>> > > > + * or more contributor license agreements. See the NOTICE file
>> > > > + * distributed with this work for additional information
>> > > > + * regarding copyright ownership. The ASF licenses this file
>> > > > + * to you under the Apache License, Version 2.0 (the
>> > > > + * "License"); you may not use this file except in compliance
>> > > > + * with the License. You may obtain a copy of the License at
>> > > > + *
>> > > > + *     http://www.apache.org/licenses/LICENSE-2.0
>> > > > + *
>> > > > + * Unless required by applicable law or agreed to in writing,
>> > > > + * software distributed under the License is distributed on an
>> > > > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > > > + * KIND, either express or implied. See the License for the
>> > > > + * specific language governing permissions and limitations under
>> the
>> > > > License.
>> > > > + */
>> > > > +package org.apache.shindig.gadgets.rewrite;
>> > > > +
>> > > > +import com.google.inject.ImplementedBy;
>> > > > +
>> > > > +import java.util.List;
>> > > > +
>> > > > [EMAIL PROTECTED](BasicContentRewriterRegistry.class)
>> > > > +public interface ContentRewriterRegistry {
>> > > > +  /**
>> > > > +   * @return An immutable list of all content rewriters
>> > > > +   */
>> > > > +  public List<ContentRewriter> getRewriters();
>> > > > +}
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -30,7 +30,6 @@
>> > > >  import org.apache.shindig.gadgets.http.HttpRequest;
>> > > >  import org.apache.shindig.gadgets.http.HttpResponse;
>> > > >  import org.apache.shindig.gadgets.oauth.OAuthArguments;
>> > > > -import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > >  import org.apache.shindig.gadgets.spec.Auth;
>> > > >  import org.apache.shindig.gadgets.spec.Preload;
>> > > >
>> > > > @@ -42,7 +41,6 @@
>> > > >
>> > > >  import java.io.IOException;
>> > > >  import java.util.Collections;
>> > > > -import java.util.List;
>> > > >  import java.util.Map;
>> > > >
>> > > >  import javax.servlet.http.HttpServletRequest;
>> > > > @@ -71,15 +69,12 @@
>> > > >
>> > > >   private final SecurityTokenDecoder securityTokenDecoder;
>> > > >   private final ContentFetcherFactory contentFetcherFactory;
>> > > > -  private final ContentRewriter rewriter;
>> > > >
>> > > >   @Inject
>> > > >   public MakeRequestHandler(ContentFetcherFactory
>> > contentFetcherFactory,
>> > > > -                            SecurityTokenDecoder
>> securityTokenDecoder,
>> > > > -                            ContentRewriter rewriter) {
>> > > > +                            SecurityTokenDecoder
>> securityTokenDecoder)
>> > {
>> > > >     this.contentFetcherFactory = contentFetcherFactory;
>> > > >     this.securityTokenDecoder = securityTokenDecoder;
>> > > > -    this.rewriter = rewriter;
>> > > >   }
>> > > >
>> > > >   /**
>> > > > @@ -128,9 +123,6 @@
>> > > >     }
>> > > >
>> > > >     Uri url = validateUrl(request.getParameter(URL_PARAM));
>> > > > -    String method = request.getMethod();
>> > > > -    Map<String, List<String>> headers = null;
>> > > > -    byte[] postBody = null;
>> > > >
>> > > >     HttpRequest req = new HttpRequest(url)
>> > > >         .setMethod(getParameter(request, METHOD_PARAM, "GET"))
>> > > > @@ -163,7 +155,6 @@
>> > > >     if (request.getParameter(GADGET_PARAM) != null) {
>> > > >       req.setGadget(Uri.parse(request.getParameter(GADGET_PARAM)));
>> > > >     }
>> > > > -    req.setContentRewriter(rewriter);
>> > > >
>> > > >     // Allow the rewriter to use an externally forced mime type.
>> This
>> > is
>> > > > needed
>> > > >     // allows proper rewriting of <script src="x"/> where x is
>> returned
>> > > > with
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -55,7 +55,6 @@
>> > > >   // This is a limitation of Guice, but this workaround...works.
>> > > >   private final HttpFetcher fetcher;
>> > > >   private final LockedDomainService lockedDomainService;
>> > > > -  private final ContentRewriter rewriter;
>> > > >
>> > > >   @Inject
>> > > >   public ProxyHandler(HttpFetcher fetcher,
>> > > > @@ -63,7 +62,6 @@
>> > > >                       ContentRewriter rewriter) {
>> > > >     this.fetcher = fetcher;
>> > > >     this.lockedDomainService = lockedDomainService;
>> > > > -    this.rewriter = rewriter;
>> > > >   }
>> > > >
>> > > >   /**
>> > > > @@ -79,8 +77,6 @@
>> > > >       req.setGadget(Uri.parse(request.getParameter(GADGET_PARAM)));
>> > > >     }
>> > > >
>> > > > -    req.setContentRewriter(rewriter);
>> > > > -
>> > > >     // Allow the rewriter to use an externally forced mime type.
>> This
>> > is
>> > > > needed
>> > > >     // allows proper rewriting of <script src="x"/> where x is
>> returned
>> > > > with
>> > > >     // a content type like text/html which unfortunately happens all
>> > too
>> > > > often
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -23,7 +23,6 @@
>> > > >  import org.w3c.dom.Element;
>> > > >  import org.w3c.dom.NodeList;
>> > > >
>> > > > -import java.net.URI;
>> > > >  import java.util.Collections;
>> > > >  import java.util.HashMap;
>> > > >  import java.util.Map;
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicGadgetSpecFactoryTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicGadgetSpecFactoryTest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicGadgetSpecFactoryTest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicGadgetSpecFactoryTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -26,6 +26,8 @@
>> > > >  import org.apache.shindig.gadgets.http.HttpResponse;
>> > > >  import org.apache.shindig.gadgets.http.HttpResponseBuilder;
>> > > >  import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > > +import org.apache.shindig.gadgets.rewrite.ContentRewriterRegistry;
>> > > > +import
>> > org.apache.shindig.gadgets.rewrite.BasicContentRewriterRegistry;
>> > > >  import org.apache.shindig.gadgets.spec.GadgetSpec;
>> > > >  import org.easymock.EasyMock;
>> > > >  import static org.easymock.EasyMock.expect;
>> > > > @@ -86,11 +88,13 @@
>> > > >
>> > > >   private final HttpFetcher fetcher =
>> > > > EasyMock.createNiceMock(HttpFetcher.class);
>> > > >   private final CaptureRewriter rewriter = new CaptureRewriter();
>> > > > +  private final ContentRewriterRegistry rewriterRegistry =
>> > > > +      new BasicContentRewriterRegistry(rewriter);
>> > > >
>> > > >   private final CacheProvider cacheProvider = new
>> > DefaultCacheProvider();
>> > > >
>> > > >   private final BasicGadgetSpecFactory specFactory
>> > > > -      = new BasicGadgetSpecFactory(fetcher, cacheProvider,
>> rewriter,
>> > > > FAKE_EXECUTOR, 5, -1000, 1000);
>> > > > +      = new BasicGadgetSpecFactory(fetcher, cacheProvider,
>> > > > rewriterRegistry, FAKE_EXECUTOR, 5, -1000, 1000);
>> > > >
>> > > >   @Test
>> > > >   public void specFetched() throws Exception {
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicMessageBundleFactoryTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicMessageBundleFactoryTest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicMessageBundleFactoryTest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/BasicMessageBundleFactoryTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -20,13 +20,11 @@
>> > > >
>> > > >  import org.apache.shindig.common.cache.CacheProvider;
>> > > >  import org.apache.shindig.common.cache.DefaultCacheProvider;
>> > > > -import org.apache.shindig.common.xml.XmlUtil;
>> > > >  import org.apache.shindig.gadgets.http.HttpFetcher;
>> > > >  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.spec.LocaleSpec;
>> > > >  import org.apache.shindig.gadgets.spec.MessageBundle;
>> > > >  import org.easymock.EasyMock;
>> > > >  import static org.easymock.EasyMock.expect;
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetTestFixture.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetTestFixture.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetTestFixture.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetTestFixture.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -27,6 +27,7 @@
>> > > >  import org.apache.shindig.gadgets.http.ContentFetcherFactory;
>> > > >  import org.apache.shindig.gadgets.http.HttpFetcher;
>> > > >  import org.apache.shindig.gadgets.oauth.OAuthFetcher;
>> > > > +import
>> > org.apache.shindig.gadgets.rewrite.BasicContentRewriterRegistry;
>> > > >  import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > >  import org.apache.shindig.gadgets.rewrite.NoOpContentRewriter;
>> > > >  import org.apache.shindig.gadgets.servlet.GadgetRenderingTask;
>> > > > @@ -72,7 +73,7 @@
>> > > >     }
>> > > >   };
>> > > >   public final GadgetSpecFactory specFactory = new
>> > > BasicGadgetSpecFactory(
>> > > > -      fetcher, cacheProvider, new NoOpContentRewriter(), executor,
>> 0,
>> > > 0L,
>> > > > 0L);
>> > > > +      fetcher, cacheProvider, new
>> BasicContentRewriterRegistry(null),
>> > > > executor, 0, 0L, 0L);
>> > > >
>> > > >
>> > > >   public GadgetTestFixture() {
>> > > >
>> > > > Added:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java?rev=688943&view=auto
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
>> > > > (added)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -0,0 +1,106 @@
>> > > > +/*
>> > > > + * Licensed to the Apache Software Foundation (ASF) under one
>> > > > + * or more contributor license agreements. See the NOTICE file
>> > > > + * distributed with this work for additional information
>> > > > + * regarding copyright ownership. The ASF licenses this file
>> > > > + * to you under the Apache License, Version 2.0 (the
>> > > > + * "License"); you may not use this file except in compliance
>> > > > + * with the License. You may obtain a copy of the License at
>> > > > + *
>> > > > + *     http://www.apache.org/licenses/LICENSE-2.0
>> > > > + *
>> > > > + * Unless required by applicable law or agreed to in writing,
>> > > > + * software distributed under the License is distributed on an
>> > > > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > > > + * KIND, either express or implied. See the License for the
>> > > > + * specific language governing permissions and limitations under
>> the
>> > > > License.
>> > > > + */
>> > > > +package org.apache.shindig.gadgets.http;
>> > > > +
>> > > > +import org.apache.shindig.gadgets.spec.GadgetSpec;
>> > > > +import org.apache.shindig.gadgets.rewrite.ContentRewriter;
>> > > > +
>> > > > +import static org.easymock.EasyMock.expect;
>> > > > +import static org.easymock.classextension.EasyMock.replay;
>> > > > +import org.easymock.classextension.EasyMock;
>> > > > +
>> > > > +import com.google.inject.AbstractModule;
>> > > > +import com.google.inject.Guice;
>> > > > +import com.google.inject.Injector;
>> > > > +
>> > > > +import junit.framework.TestCase;
>> > > > +
>> > > > +import java.util.HashMap;
>> > > > +import java.util.Map;
>> > > > +
>> > > > +/**
>> > > > + * Sanity test to ensure that Guice injection of a default
>> > > > + * ContentRewriter leads to its use by an AbstractHttpCache
>> > > > + * in properly rewriting cacheable content.
>> > > > + */
>> > > > +public class AbstractHttpCacheTest extends TestCase {
>> > > > +  private Injector injector;
>> > > > +
>> > > > +  protected void setUp() throws Exception {
>> > > > +    injector = Guice.createInjector(new TestCacheModule());
>> > > > +  }
>> > > > +
>> > > > +  public void testCacheWithRewritingOps() {
>> > > > +    // Setup: could move this elsewhere, but no real need right
>> now.
>> > > > +    HttpCacheKey key = EasyMock.createNiceMock(HttpCacheKey.class);
>> > > > +    expect(key.isCacheable()).andReturn(true).anyTimes();
>> > > > +    HttpRequest request =
>> EasyMock.createNiceMock(HttpRequest.class);
>> > > > +    expect(request.getIgnoreCache()).andReturn(false).anyTimes();
>> > > > +    replay(key, request);
>> > > > +    HttpResponse response = new
>> > > > HttpResponseBuilder().setHttpStatusCode(200)
>> > > > +
>> > > >
>> > >
>> >
>>  
>> .setResponse("foo".getBytes()).setExpirationTime(Integer.MAX_VALUE).create();
>> > > > +
>> > > > +    // Actual test.
>> > > > +    AbstractHttpCache ahc =
>> injector.getInstance(TestHttpCache.class);
>> > > > +    HttpResponse rewritten = ahc.addResponse(key, request,
>> response);
>> > > > +    assertNotSame(rewritten, response);
>> > > > +    assertEquals(PFX_STR + "foo", rewritten.getResponseAsString());
>> > > > +    assertSame(rewritten, ahc.getResponse(key, request));
>> > > > +    assertSame(response, ahc.removeResponse(key));
>> > > > +  }
>> > > > +
>> > > > +  private static class TestHttpCache extends AbstractHttpCache {
>> > > > +    private final Map<String, HttpResponse> map;
>> > > > +
>> > > > +    public TestHttpCache() {
>> > > > +      super();
>> > > > +      map = new HashMap<String, HttpResponse>();
>> > > > +    }
>> > > > +
>> > > > +    public void addResponseImpl(String key, HttpResponse response)
>> {
>> > > > +      map.put(key, response);
>> > > > +    }
>> > > > +
>> > > > +    public HttpResponse getResponseImpl(String key) {
>> > > > +      return map.get(key);
>> > > > +    }
>> > > > +
>> > > > +    public HttpResponse removeResponseImpl(String key) {
>> > > > +      return map.remove(key);
>> > > > +    }
>> > > > +
>> > > > +  }
>> > > > +
>> > > > +  private static String PFX_STR = "--prefixtest--";
>> > > > +  private static class TestContentRewriter implements
>> ContentRewriter
>> > {
>> > > > +    public String rewriteGadgetView(GadgetSpec spec, String
>> content,
>> > > > String mime) {
>> > > > +      return PFX_STR + content;
>> > > > +    }
>> > > > +
>> > > > +    public HttpResponse rewrite(HttpRequest req, HttpResponse resp)
>> {
>> > > > +      return new
>> > > > HttpResponseBuilder().setHttpStatusCode(resp.getHttpStatusCode())
>> > > > +          .setResponse((PFX_STR +
>> > > > resp.getResponseAsString()).getBytes()).create();
>> > > > +    }
>> > > > +  }
>> > > > +
>> > > > +  private static class TestCacheModule extends AbstractModule {
>> > > > +    protected void configure() {
>> > > > +      bind(ContentRewriter.class).to(TestContentRewriter.class);
>> > > > +    }
>> > > > +  }
>> > > > +}
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -90,7 +90,6 @@
>> > > >         .setGadget(DEFAULT_URI)
>> > > >         .setMethod("POST")
>> > > >         .setPostBody(POST_BODY.getBytes())
>> > > > -        .setContentRewriter(null)
>> > > >         .setRewriteMimeType("text/fake")
>> > > >         .setSecurityToken(AnonymousSecurityToken.getInstance())
>> > > >         .setSignOwner(false)
>> > > > @@ -104,7 +103,6 @@
>> > > >     assertEquals(request.getGadget(), request2.getGadget());
>> > > >     assertEquals(request.getMethod(), request2.getMethod());
>> > > >     assertEquals(request.getPostBodyAsString(),
>> > > > request2.getPostBodyAsString());
>> > > > -    assertEquals(request.getContentRewriter(),
>> > > > request2.getContentRewriter());
>> > > >     assertEquals(request.getRewriteMimeType(),
>> > > > request2.getRewriteMimeType());
>> > > >     assertEquals(request.getSecurityToken(),
>> > > request2.getSecurityToken());
>> > > >     assertEquals(request.getSignOwner(), request2.getSignOwner());
>> > > >
>> > > > Added:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistryTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistryTest.java?rev=688943&view=auto
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistryTest.java
>> > > > (added)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BasicContentRewriterRegistryTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -0,0 +1,50 @@
>> > > > +/*
>> > > > + * Licensed to the Apache Software Foundation (ASF) under one
>> > > > + * or more contributor license agreements. See the NOTICE file
>> > > > + * distributed with this work for additional information
>> > > > + * regarding copyright ownership. The ASF licenses this file
>> > > > + * to you under the Apache License, Version 2.0 (the
>> > > > + * "License"); you may not use this file except in compliance
>> > > > + * with the License. You may obtain a copy of the License at
>> > > > + *
>> > > > + *     http://www.apache.org/licenses/LICENSE-2.0
>> > > > + *
>> > > > + * Unless required by applicable law or agreed to in writing,
>> > > > + * software distributed under the License is distributed on an
>> > > > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > > > + * KIND, either express or implied. See the License for the
>> > > > + * specific language governing permissions and limitations under
>> the
>> > > > License.
>> > > > + */
>> > > > +package org.apache.shindig.gadgets.rewrite;
>> > > > +
>> > > > +import junit.framework.TestCase;
>> > > > +
>> > > > +public class BasicContentRewriterRegistryTest extends TestCase {
>> > > > +  public void testNoArgsCreatedBasicRegistry() {
>> > > > +    BasicContentRewriterRegistry r = new
>> > > > BasicContentRewriterRegistry(null);
>> > > > +    assertNotNull(r.getRewriters());
>> > > > +    assertEquals(0, r.getRewriters().size());
>> > > > +  }
>> > > > +
>> > > > +  public void testSingleValuedBasicRegistry() {
>> > > > +    BasicContentRewriterRegistry r = new
>> BasicContentRewriterRegistry(
>> > > > +        new NoOpContentRewriter());
>> > > > +    assertNotNull(r.getRewriters());
>> > > > +    assertEquals(1, r.getRewriters().size());
>> > > > +    assertTrue(r.getRewriters().get(0) instanceof
>> > NoOpContentRewriter);
>> > > > +  }
>> > > > +
>> > > > +  public void testBasicContentRegistryWithAdds() {
>> > > > +    ContentRewriter cr0 = new NoOpContentRewriter();
>> > > > +    BasicContentRewriterRegistry r = new
>> > > > BasicContentRewriterRegistry(cr0);
>> > > > +    ContentRewriter cr1 = new NoOpContentRewriter();
>> > > > +    ContentRewriter cr2 = new NoOpContentRewriter();
>> > > > +    r.appendRewriter(cr1);
>> > > > +    r.appendRewriter(cr2);
>> > > > +    assertNotNull(r.getRewriters());
>> > > > +    assertEquals(3, r.getRewriters().size());
>> > > > +    assertSame(cr0, r.getRewriters().get(0));
>> > > > +    assertSame(cr1, r.getRewriters().get(1));
>> > > > +    assertSame(cr2, r.getRewriters().get(2));
>> > > > +  }
>> > > > +}
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -52,7 +52,7 @@
>> > > >   private static final SecurityToken DUMMY_TOKEN = new
>> > FakeGadgetToken();
>> > > >
>> > > >   private final MakeRequestHandler handler = new
>> > > > MakeRequestHandler(contentFetcherFactory,
>> > > > -      securityTokenDecoder, rewriter);
>> > > > +      securityTokenDecoder);
>> > > >
>> > > >   private void expectGetAndReturnBody(String response) throws
>> Exception
>> > {
>> > > >     expectGetAndReturnBody(fetcher, response);
>> > > >
>> > > > Modified:
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java
>> > > > URL:
>> > > >
>> > >
>> >
>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java?rev=688943&r1=688942&r2=688943&view=diff
>> > > >
>> > > >
>> > >
>> >
>> ==============================================================================
>> > > > ---
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java
>> > > > (original)
>> > > > +++
>> > > >
>> > >
>> >
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java
>> > > > Mon Aug 25 19:45:55 2008
>> > > > @@ -48,7 +48,7 @@
>> > > >
>> > > >   private final MakeRequestServlet servlet = new
>> MakeRequestServlet();
>> > > >   private final MakeRequestHandler handler = new
>> > > > MakeRequestHandler(contentFetcherFactory,
>> > > > -      securityTokenDecoder, rewriter);
>> > > > +      securityTokenDecoder);
>> > > >
>> > > >   private final HttpRequest internalRequest = new
>> > > HttpRequest(REQUEST_URL);
>> > > >   private final HttpResponse internalResponse = new
>> > > > HttpResponse(RESPONSE_BODY);
>> > > >
>> > > >
>> > > >
>> > >
>> >
>>
>
>

Reply via email to