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); > > >

