You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by li...@inuus.com on 2010/05/06 23:54:25 UTC

Use guice-multibindings for Template TagHandlers (issue1147041)

Reviewers: shindig.remailer_gmail.com,



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

Affected files:
   java/gadgets/pom.xml
   M  
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
   M  
java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
   pom.xml


Index: java/gadgets/pom.xml
diff --git a/java/gadgets/pom.xml b/java/gadgets/pom.xml
index  
43c0a800e4500712cdbd9281637b125dda13e4b6..5fea985da61cd7511a1e0a8fb09d4602522425c1  
100644
--- a/java/gadgets/pom.xml
+++ b/java/gadgets/pom.xml
@@ -154,6 +154,10 @@
        <artifactId>guice</artifactId>
      </dependency>
      <dependency>
+      <groupId>com.google.inject.extensions</groupId>
+      <artifactId>guice-multibindings</artifactId>
+    </dependency>
+    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
      </dependency>
Index:  
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
diff --git  
a/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java  
b/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
index  
82ba28a2d4ff3eb4fe8c2c43d99d9a2723bd89a8..66bf12e1a78a957153a090837654800c5c7c38b3  
100644
---  
a/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
+++  
b/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
@@ -89,5 +89,4 @@ public class DefaultGuiceModule extends AbstractModule {
              return t;
          }
      };
-
  }
Index:  
java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
diff --git  
a/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java  
b/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
index  
672f0bc92adea04b94f64012ead9a929dd27b8d8..97b5d13bcd14405712756263f096adae4110b1db  
100644
---  
a/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
+++  
b/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateModule.java
@@ -21,6 +21,7 @@ package org.apache.shindig.gadgets.templates;
  import com.google.common.collect.ImmutableSet;

  import com.google.inject.AbstractModule;
+import com.google.inject.multibindings.Multibinder;
  import com.google.inject.Provides;
  import com.google.inject.Singleton;

@@ -42,19 +43,14 @@ public class TemplateModule extends AbstractModule {
    @Override
    protected void configure() {
      bind(TemplateProcessor.class).to(DefaultTemplateProcessor.class);
-  }

-  // TODO: switch to Guice multibindings when that JAR becomes available
-  // in a Maven repository
-
-  @Provides
-  @Singleton
-  protected Set<TagHandler> provideTagHandlers(HtmlTagHandler htmlHandler,
-                                           IfTagHandler ifHandler,  
RepeatTagHandler repeatHandler,
-                                           RenderTagHandler renderHandler,  
FlashTagHandler flashHandler,
-                                           VariableTagHandler  
variableHandler) {
-    return ImmutableSet.of((TagHandler) htmlHandler, ifHandler,
-        repeatHandler, renderHandler, flashHandler,
-        variableHandler);
+    /* You can add the same construct in your own modules to register your  
own tag handler.. */
+
+    Multibinder<TagHandler> tagBinder = Multibinder.newSetBinder(binder(),  
TagHandler.class);
+    tagBinder.addBinding().to(HtmlTagHandler.class);
+    tagBinder.addBinding().to(IfTagHandler.class);
+    tagBinder.addBinding().to(RepeatTagHandler.class);
+    tagBinder.addBinding().to(FlashTagHandler.class);
+    tagBinder.addBinding().to(VariableTagHandler.class);
    }
  }
Index: pom.xml
diff --git a/pom.xml b/pom.xml
index  
5fc2407008fd9f0ef46a6d77d6700dc06596c891..93a8b24f78bee8cba9c0698f0b43639f17c1b94b  
100644
--- a/pom.xml
+++ b/pom.xml
@@ -1357,6 +1357,12 @@
        </dependency>

        <dependency>
+        <groupId>com.google.inject.extensions</groupId>
+        <artifactId>guice-multibindings</artifactId>
+        <version>2.0</version>
+      </dependency>
+
+      <dependency>
          <groupId>com.google.collections</groupId>
          <artifactId>google-collections</artifactId>
          <version>1.0</version>