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>