On Wed, Jan 14, 2009 at 10:17 PM, Rick <[email protected]> wrote:

>
>
> On Wed, Jan 14, 2009 at 3:23 PM, Robbie Vanbrabant <
> [email protected]> wrote:
>
>> I think the more elegant solution (Guice 2.0) would be to use private
>> modules:
>>
>> http://google-guice.googlecode.com/svn/trunk/latest-javadoc/com/google/inject/PrivateModule.html
>>
>> Avoiding work in modules is almost always a good thing, explained here:
>>
>> http://code.google.com/p/google-guice/wiki/ModulesShouldBeFastAndSideEffectFree
>>
>> Hope this helps
>> Robbie
>>
>>
>
> I'm confused how I would go about doing this not in a module (I'd go with
> guice2 but I'm worried about the testing stuff and not sure it'll work with
> 2. I'm using the  mycila stuff with TestNG.) My module looks like:
>
>    @Override
>     protected void configure() {
>
>         SqlMapClient guiSqlClient =
> DaoUtil.loadSqlMapClient("sqlMapConfig-gui.xml");
>         SqlMapClient ndaSqlClient =
> DaoUtil.loadSqlMapClient("sqlMapConfig-nda.xml");
>
>
> bind(SqlMapClient.class).annotatedWith(Names.named("GUI")).toInstance(guiSqlClient);
>
> bind(SqlMapClient.class).annotatedWith(Names.named("NDA")).toInstance(ndaSqlClient);
>
> How would I do this outside of my module?
>

Rough Guice 2.0 example (quickly coded in gmail):

Usage:
new DaoModule() {
  @Override
  protected void customBindings() {
    expose(BaseDao.class).annotatedWith(Gui.class).to(...);
    bindConstant().annotatedWith(Names.named("xml")).to(xml);
  }
}

Implementation:
abstract class DaoModule extends PrivateModule {
  void configure() {
    customBindings();
  }

  @Provides
  public SqlMapClient provideSqlMapClient(@Named("xml") String xml) {
    return DaoUtil.loadSqlMapClient(xml);
  }

  abstract void customBindings();
}

You could also do something similar with Guice 1.0, but it will require more
code because you need to use more binding annotations.

Hope this helps,
Robbie

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to