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 at
http://groups.google.com/group/google-guice?hl=en.