Odd, mail program claims it was attached... perhaps it wasn't sent thru
shindig-dev. I've instead attached the patch to:
https://issues.apache.org/jira/browse/SHINDIG-507
--John
On Tue, Aug 26, 2008 at 3:22 PM, Kevin Brown <[EMAIL PROTECTED]> wrote:
> 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);
> >> > > >
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>