> Hi,
> I am using Names.bindProperties(binder(), properties); where my
> properties are taken from a pre-initialized configuration.
> One of the properties represent java.util.Date.
> We have a simple date format class that sets the value:
> SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy
> HH:mm:ss");
> when I just use the Names binding, I get the Guice creation exception
> that the named field was not bound.
Names.bindProperties(...) creates constant bindings for the properties map - constant bindings are converted from Strings to actual instances by TypeConverters:
http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/spi/TypeConverter.html
Guice provides built-in TypeConverters for primitive types, enums, and class literals - but not for Date, hence the creation exception. However, you can add your own:
See also http://99soft.github.com/rocoto/ which provides a range of useful TypeConverters, including one for Date: http://99soft.github.com/rocoto/converters.html
> This is my injected constructor:
>
> @Inject
> public CoreFetchOperationsImpl(@Named("MpsQueryFilter") String
> genericQuery, @Named("MpsIterationBulkSize")int bulkSizeFetch,
> @Named("MpsLastProcessingTime") Date lastProcessingTime)
>
> In order to solve it, I am getting from the pre-initialized
> configuration the concrete Date as string, parse it using the format
> and bind specifically:
> bind(Date.class).annotatedWith(Names.named("MpsLastProcessingTime")).toInstance(parsedDate));
>
> Is there a better way?
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "google-guice" group.
> To post to this group, send email to google...@googlegroups.com.
> To unsubscribe from this group, send email to google-guice...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
>
That's right - Type conversion only matches by TypeLiteral (not by Key) so it's not possible to select different TypeConverters for different annotations.
What's your use-case for selecting different String->Date conversions by annotation? There are several approaches you could take involving the SPI, etc. but a lot depends on your use-case...