Hi, Simo.

You're welcome. I think you just found a bug in the documentation.

convertToTypes(Matchers.only(DateTime.class), new DateTimeConverter
());

should be

convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new
DateTimeConverter());

or something similar.

Cheers
Alen

On Jan 6, 10:27 pm, Simone Tripodi <[email protected]> wrote:
> Hi Alen,
> thank a lot, it is nicely working :)
> I got in confusion reading the javadoc 
> here:http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/injec...
> Thanks once again, your help is more thank appreciated!
> All the best,
> Simo
>
>
>
> On Wed, Jan 6, 2010 at 10:12 PM, Alen Vrečko <[email protected]> wrote:
> > Hi,
>
> > Your Matcher is wrong. You need to match TypeLiteral, but you are
> > matching a Class.
>
> > Change Matchers.only(URL.class) to Matchers.only(TypeLiteral.get
> > (URL.class)).
>
> > Alternatively you could make a utility method url and do something
> > like
>
> > .annotatedWith(named("url")).to(url("http://code.google.com/";));
>
> > Cheers
> > Alen
>
> > On Jan 6, 7:37 pm, Simone Tripodi <[email protected]> wrote:
> >> Hi all guys,
> >> I'm just trying to use the Binder#convertToTypes to convert URLs in that 
> >> way:
>
> >> @Override
> >>     protected void configure() {
> >>         this.binder().convertToTypes(Matchers.only(URL.class), new
> >> TypeConverter {
>
> >>     public Object convert(String value, TypeLiteral<?> toType) {
> >>         try {
> >>             return new URL(value);
> >>         } catch (URISyntaxException e) {
> >>             throw new RuntimeException("String vaue '"
> >>                     + value
> >>                     + "' is not a valid URL", e);
> >>         }
> >>     }});
>
> >>     }
>
> >> then I annotate the POJO field:
>
> >> class FakeConfig {
>
> >>     @Inject
> >>     @Named("url")
> >>     private URL url;
>
> >>     ....
>
> >> }
>
> >> and finally in different module (it comes from a 3rd part developed
> >> application):
>
> >> Injector injector = Guice.createInjector(
> >>                 new AbstractModule() {
> >>                     @Override
> >>                     protected void configure() {
> >>                         this.bindConstant()
> >>                             .annotatedWith(Names.named("url"))
> >>                             .to("http://code.google.com/";);
> >>                     }
> >>                 });
>
> >> I get the following error:
>
> >> com.google.inject.ConfigurationException: Guice configuration errors:
>
> >> 1) No implementation for java.net.URL annotated with
> >> @com.google.inject.name.Named(value=url) was bound.
> >>   while locating java.net.URL annotated with
> >> @com.google.inject.name.Named(value=url)
>
> >> Am I misunderstanding or missing something? Thanks in advance, any
> >> hint is very appreciated.
> >> Best regards,
> >> Simo
>
> >> --http://www.google.com/profiles/simone.tripodi
>
> > --
> > 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 
> > athttp://groups.google.com/group/google-guice?hl=en.
>
> --http://www.google.com/profiles/simone.tripodi
-- 
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