Author: lindner
Date: Thu Nov  4 22:58:54 2010
New Revision: 1031332

URL: http://svn.apache.org/viewvc?rev=1031332&view=rev
Log:
SHINDIG-1456 | Patch from Kai Feng Zhang | Allow modules to add new rewriters

Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/GadgetRewritersProvider.java
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/GadgetRewritersProvider.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/GadgetRewritersProvider.java?rev=1031332&r1=1031331&r2=1031332&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/GadgetRewritersProvider.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/GadgetRewritersProvider.java
 Thu Nov  4 22:58:54 2010
@@ -19,13 +19,13 @@
 
 package org.apache.shindig.gadgets.render;
 
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
+import java.util.Set;
 
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.rewrite.GadgetRewriter;
 
-import java.util.List;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
 
 /**
  * Class to provide list of rewriters according to gadget request.
@@ -34,15 +34,14 @@ import java.util.List;
  * @since 2.0.0
  */
 public class GadgetRewritersProvider {
-  private final List<GadgetRewriter> renderRewriters;
+  private final Set<GadgetRewriter> renderRewriters;
 
   @Inject
-  public GadgetRewritersProvider(
-      @Named("shindig.rewriters.gadget") List<GadgetRewriter> renderRewriters) 
{
+  public GadgetRewritersProvider(@Named("shindig.rewriters.gadget") 
Set<GadgetRewriter> renderRewriters) {
     this.renderRewriters = renderRewriters;
   }
 
-  public List<GadgetRewriter> getRewriters(GadgetContext context) {
+  public Set<GadgetRewriter> getRewriters(GadgetContext context) {
     return renderRewriters;
   }
 }

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java?rev=1031332&r1=1031331&r2=1031332&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/RewriteModule.java
 Thu Nov  4 22:58:54 2010
@@ -18,12 +18,8 @@
  */
 package org.apache.shindig.gadgets.rewrite;
 
-import com.google.common.collect.ImmutableList;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-import com.google.inject.name.Names;
+import java.util.List;
+
 import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
 import org.apache.shindig.gadgets.render.CajaResponseRewriter;
 import org.apache.shindig.gadgets.render.OpenSocialI18NGadgetRewriter;
@@ -33,7 +29,13 @@ import org.apache.shindig.gadgets.render
 import org.apache.shindig.gadgets.rewrite.image.BasicImageRewriter;
 import org.apache.shindig.gadgets.servlet.CajaContentRewriter;
 
-import java.util.List;
+import com.google.common.collect.ImmutableList;
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.name.Named;
+import com.google.inject.name.Names;
 
 /**
  * Guice bindings for the rewrite package.
@@ -45,25 +47,23 @@ public class RewriteModule extends Abstr
     bind(ResponseRewriterRegistry.class)
         
.annotatedWith(Names.named("shindig.accelerate.response.rewriter.registry"))
         .to(AccelResponseRewriterRegistry.class);
+    
+    configureRewriters();
+
   }
 
-  @Provides
-  @Singleton
-  @Named("shindig.rewriters.gadget")
-  protected List<GadgetRewriter> provideGadgetRewriters(
-      PipelineDataGadgetRewriter pipelineRewriter,
-      TemplateRewriter templateRewriter,
-      AbsolutePathReferenceRewriter absolutePathRewriter,
-      StyleTagExtractorContentRewriter styleTagExtractorRewriter,
-      StyleAdjacencyContentRewriter styleAdjacencyRewriter,
-      ProxyingContentRewriter proxyingRewriter,
-      CajaContentRewriter cajaRewriter,
-      SanitizingGadgetRewriter sanitizedRewriter,
-      RenderingGadgetRewriter renderingRewriter,
-      OpenSocialI18NGadgetRewriter i18nRewriter) {
-    return ImmutableList.of(pipelineRewriter, templateRewriter,
-        absolutePathRewriter, styleTagExtractorRewriter, 
styleAdjacencyRewriter, proxyingRewriter,
-        cajaRewriter, sanitizedRewriter, renderingRewriter, i18nRewriter);
+  private void configureRewriters() {
+    Multibinder<GadgetRewriter> multibinder = 
Multibinder.newSetBinder(binder(), GadgetRewriter.class, 
Names.named("shindig.rewriters.gadget"));       
+    multibinder.addBinding().to(PipelineDataGadgetRewriter.class);
+    multibinder.addBinding().to(TemplateRewriter.class);
+    multibinder.addBinding().to(AbsolutePathReferenceRewriter.class);
+    multibinder.addBinding().to(StyleTagExtractorContentRewriter.class);
+    multibinder.addBinding().to(StyleAdjacencyContentRewriter.class);
+    multibinder.addBinding().to(ProxyingContentRewriter.class);
+    multibinder.addBinding().to(CajaContentRewriter.class);
+    multibinder.addBinding().to(SanitizingGadgetRewriter.class);
+    multibinder.addBinding().to(RenderingGadgetRewriter.class);
+    multibinder.addBinding().to(OpenSocialI18NGadgetRewriter.class);
   }
 
   @Provides

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java?rev=1031332&r1=1031331&r2=1031332&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java
 Thu Nov  4 22:58:54 2010
@@ -42,6 +42,7 @@ import java.util.Collection;
 import java.util.concurrent.Callable;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * Tests for HtmlRenderer
@@ -84,7 +85,7 @@ public class HtmlRendererTest {
   @Before
   public void setUp() throws Exception {
     renderer = new HtmlRenderer(preloaderService, proxyRenderer,
-        new GadgetRewritersProvider(ImmutableList.of((GadgetRewriter) 
captureRewriter)),
+        new GadgetRewritersProvider(ImmutableSet.of((GadgetRewriter) 
captureRewriter)),
         null);
     
   }


Reply via email to