We now have Guice 2.0, nice things.. http://code.google.com/p/google-guice/wiki/Guice20 This allows some nice things like the following code snippet. Does anyone want to come up with what changes we'd like to see in the way shindig uses Guice and especially how we interact with integrators...
@@ -66,14 +68,17 @@ public class SocialApiTestsGuiceModule extends AbstractModule { bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.json")).to( BeanJsonConverter.class); - bind(new TypeLiteral<Set<Object>>(){}).annotatedWith( - Names.named("org.apache.shindig.social.handlers")) - .toInstance(ImmutableSet.<Object>of(ActivityHandler.class, AppDataHandler.class, - PersonHandler.class, MessageHandler.class)); - bind(String.class).annotatedWith( Names.named("shindig.containers.default")) .toInstance("res://containers/default/container.js"); bind(ContainerConfig.class).to(JsonContainerConfig.class); } + + @Provides + @Singleton + @Named("org.apache.shindig.social.handlers") + Set<Object> getHandlers() { + return ImmutableSet.<Object>of(ActivityHandler.class, AppDataHandler.class, PersonHandler.class, MessageHandler.class); + } + }