Thanks Alan and David for replying.

* I knew about assisted inject, but had not thought about using a
collection to map classes to factories created by assisted inject
inside the module itself.

* thanks a lot this really solved my problem and I don't have to
resort to reflection.


Thanks again.

On Fri, May 22, 2009 at 12:46 AM, Alen Vrecko <[email protected]> wrote:
>
> Here are some examples of using Assisted Inject and Map Binder
>
> http://groups.google.com/group/google-guice/browse_thread/thread/3c86c7712deae803/50bd5af95622e49b
>
> Maybe it will give you some ideas.
>
> Cheers,
> Alen
>
> On May 21, 9:00 pm, David Stenglein <[email protected]> wrote:
>> Jigar,
>>
>> AssistedInject allows you to have a single factory interface for
>> creating all of your instances, even if they have different
>> dependencies in the constructor arguments. As long as the other
>> arguments can be supplied through Injection, it doesn't matter how
>> many there are; there just needs to be a match between the arguments
>> of the create(...) method of your factory interface and the Assisted
>> arguments of each types constructor.
>>
>> Given this, all you need is some way to call up the factory for an
>> instance you need and you can get that instance without reflection.
>>
>> The grouping of all of your implementations could be done with a
>> MapBinder (http://code.google.com/p/google-guice/wiki/Multibindings).
>> All you need to do is choose a key to select your implementation
>> (which you probably have already).
>>
>> -Dave
>>
>> -Dave
>>
>> http://code.google.com/p/google-guice/wiki/Multibindings
>>
>>
>>
>> On Thu, May 21, 2009 at 4:18 AM, Jigar Gosar <[email protected]> wrote:
>>
>> > * How Injecting dependencies when creating "objects" via reflection
>> > and the "object" also has a constructor parameters.
>>
>> > * details:
>>
>> > I have a Hierachy (tree) of classes.
>>
>> > class Base{
>> >    Base(String s){...}
>> > }
>>
>> > class Child1{
>> >       Child1(String s){super(s)}
>> > }
>>
>> > class Child2{
>> >       Child1(String s){super(s)}
>> > }
>>
>> > and so on, not that class Child1 also has its own children.
>>
>> > * Till now I was creating the classes via reflection and invoking the
>> > string parameter constructor.
>>
>> > * now the base class has a dependency that I want guice to inject.
>>
>> > class Base{
>> >    Base(String s, Dep d){...}
>> > }
>>
>> > class Child1{
>> >       Child1(String s, Dep d){super(s)}
>> > }
>>
>> > class Child2{
>> >       Child1(String s, Dep d){super(s)}
>> > }
>>
>> > * I have read up on assisted inject, but am not sure on how to use is
>> > to solve this problem. Since I am using reflection to to create the
>> > objects of this class Hierarchy.
>>
>> > * Note: the reason I am using reflection to create objects is because
>> > the type of the object to be instantiated is not known till runtime. I
>> > receive strings from socket and need to wrap them into objects before
>> > processing them (I have simplified the actual requirement for sake of
>> > brevity).
>>
>> > * so the broader question is how do I create objects of class whose
>> > type is not known till runtime and it has dependinecies and also
>> > constructor parameters.
>>
>> > * and kudos for the 2.0 release :)
> >
>



-- 
Jigar Gosar
http://jigar.org/blog
http://simplegtd.com
http://madcow.tumblr.com

--~--~---------~--~----~------------~-------~--~----~
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