I'm not sure exactly yet what are ALL of my use cases :) This is what I have right now: property named LastProcessingTime , which has a specific representation of Date (base on a format we have been using). A class (the service) that needs to use this property as Date, and that property is injected by @Named
I will also need to update DB with date (different one) with the same format, but this will be using a method call. In the future (we are migrating to Guice just now), I will have other services that will get injected with date, but they'll have different @Named. Well, After explaining, I think that conversion will be good for the future use-cases as well :) Thanks for the help !! The code is much cleaner now. Eyal Golan [email protected] Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 Skype: egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Tue, Jan 31, 2012 at 7:13 PM, Stuart McCulloch <[email protected]> wrote: > On 31 Jan 2012, at 16:41, egolan wrote: > > jordi, > > I tried that. the convertToTypes needs TypeLiteral. > > > > Tim & Stuart, > > This is great !! > > I think it is a good idea to inject all dates with that converter. > > However, just to understand. Is it possible to convert base on > > Annotation (or Named) > > 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... > > > Thanks, > > > > On Jan 31, 6:39 pm, jordi <[email protected]> wrote: > >> use a regular guice Matcher [1], I guess this would do the trick: > >> > >> import static com.google.inject.matcher.Matchers.annotatedWith; > >> > >> // ... > >> protected void configure() { > >> convertToTypes(annotatedWith(Names.named("YOUR_KEY")), typeConverter); > >> > >> } > >> > >> jordi > >> > >> [1] > http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/injec... > >> > >> > >> > >> > >> > >> > >> > >> On Tue, Jan 31, 2012 at 5:20 PM, Eyal Golan <[email protected]> wrote: > >>> Thanks for the inputs. > >>> The code example is what I needed. > >>> However, using it will convert all Date classes that get injected. > >>> Is there a way to create a converter only for parameters annotated with > >>> Named ? > >> > >>> Eyal Golan > >>> [email protected] > >> > >>> Visit:http://jvdrums.sourceforge.net/ > >>> LinkedIn:http://www.linkedin.com/in/egolan74 > >>> Skype: egolan74 > >> > >>> P Save a tree. Please don't print this e-mail unless it's really > necessary > >> > >>> On Tue, Jan 31, 2012 at 5:55 PM, Tim Peierls <[email protected]> wrote: > >> > >>>> I recommend using Rocoto, too, but here's an example that shows how > to do > >>>> it yourself, expressed as a JUnit test: > >> > >>>> http://pastebin.com/mWx9xG4M > >> > >>>> --tim > >> > >>>> On Tue, Jan 31, 2012 at 10:10 AM, Stuart McCulloch <[email protected] > >wrote: > >> > >>>>> On 31 Jan 2012, at 14:42, egolan wrote: > >> > >>>>>> 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/injec... > >> > >>>>> 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: > >> > >>>>> > http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/injec...) > >> > >>>>> See alsohttp://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")).toInst > ance(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 [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. > > -- 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.
