Thank you i get that better now.

On Thursday, December 26, 2013 5:27:42 PM UTC+1, Nate Bauernfeind wrote:
>
> FWIW, I use AssistedInject Factories for dynamic content.
>
> So for example, I've written a monitoring system where nodes announce 
> themselves in real-time (via Zookeeper) and user-input information like 
> alert configuration gets stored in a simple key-value store (and also shows 
> up dynamically).
>
> Each item has a ServiceName associated with it. To make the software 
> scale, it has the ability to monitor any subset of Services. So for each 
> Service I construct a new object graph for that service (and that service 
> alone).
>
> So I use assisted inject to create my ServiceMonitor class, which is the 
> main entry point for that sub-graph. It has the primary Injector injected 
> and then uses it to create a childInjector and binds a handful of objects 
> as Singletons in the [logical] scope of the Service.
>
> It's a really convenient pattern, as there are dynamic properties 
> (serviceName and metric tags), singletons in the scope of the sub-graph 
> (current state about healthy hosts, for example), and singletons across the 
> entire system (like the subsystem that communicates with Pagerduty).
>
>
> I do not use AssistedInject for Configuration at all. As I've told you 
> before, I heavily use dropwizard, so I follow their pattern for 
> Configuration. As a result I typically have a top level Configuration 
> object which actually has several fields that are Configuration objects for 
> each different sub-system. When I construct the Guice Module for that 
> sub-system I typically pass the Configuration object into the module. It is 
> then up to that Module to do whatever it needs to do with Config. 
>
> I try to avoid injecting any Configuration objects as they're not really 
> re-usable -- you use it once and hopefully throw it away. So if I need the 
> information to, say, create an HttpClient, then I tend to create a Provider 
> method on the Module and use the Configuration right there without letting 
> it leak any further.
>
>
> Hope that helps.
>
> Nate
>
>
> On Thu, Dec 26, 2013 at 10:01 AM, Maatary Okouya 
> <[email protected]<javascript:>
> > wrote:
>
>> Maybe if we go for example or more details information that could help. 
>> Here is my situation : 
>>
>>  I have an *InfrastructureService*, which require a 
>> *KnowledgeBaseService* which in turn require an*ConFigDataObject*. My 
>> configDataObject contains information coming from the inputs of the 
>> program.*The 
>> configDataObject store these information after doing some validation and 
>> processing on those inputs*. For instance a string representing file 
>> path can be provided to it, and it will validate that it is a file that 
>> exist, and provide a getter method that return that File to its consumer 
>> (i.e instead of the fileName). Other things might be URLNname to real URL 
>> Object, and so on.
>>
>> The important point here is this following graph: *InfrastructureService*
>>  -> *KnowledgeBaseService* ->*ConFigDataObject* -> *InputData*
>>
>> Therefore the *InfrastructureService* can only work with a 
>> *knowledgeBaseService* that is started with the right inputFile, URL, 
>> workingfolder and etc.... which is provided to it with a configDataObject, 
>> that receive them from the input of the program and store a processed 
>> version of them.
>>
>> Therefore as of now what i do is to have a assistedFactory to create the 
>> *knowledgeBaseService*. It takes as parameter the ConfigDataObject. The 
>> *configDataObject* is created with a *factoryMethod (Scala Companion 
>> Object)*. Finally, the an assistedFactory is also create for the 
>> *InfrastructureService*which takes as parameter for its *creation method*
>>  a *KnowledgeBaseService*.
>>
>>
>>
>> So what exactly are you recommending here ? Would suggest to: 
>>
>>
>> val data = new ConfigData(.....)
>>
>>
>> Class module extends AbstractModule {
>>
>>     bind(Configdata).toInstance(data)
>>
>>     .....
>>
>> }
>>
>>
>> I have to try.... but let me know if i got u right please
>>
>>
>> On Thu, Dec 26, 2013 at 11:46 AM, Willi Schönborn 
>> <[email protected]<javascript:>
>> > wrote:
>>
>>> It does work, I've done it multiple times this way. It's very easy of 
>>> you use args4j, you then already have a little pojo which wraps your 
>>> command line arguments.
>>>
>>> What you then need to do is: bind your settings to that one instance and 
>>> let your Z depend on it. Everything else just depends on their direct 
>>> dependency. 
>>> On Dec 26, 2013 10:53 AM, "Maatary Okouya" 
>>> <[email protected]<javascript:>> 
>>> wrote:
>>>
>>>> Thx for the prompt answer. However I don't think that would work.
>>>>
>>>> Like I said u have A needs B needs C need Z needs cli inputs. 
>>>> C needs a Z, but Z can t be constructed without inputs, which must be 
>>>> cli provided.
>>>> B needs a C, but C can be constructed without a Z inputs
>>>> And so on.
>>>> And so on. 
>>>>
>>>> On Thursday, December 26, 2013, Moandji Ezana wrote:
>>>>
>>>>> If everything depends on CLI input, you could wrap it in a 'settings' 
>>>>> object and inject that object where needed, rather than use assisted 
>>>>> injection everywhere.
>>>>> On Dec 26, 2013 3:09 AM, "Maatary Okouya" <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> I'm currently using Guice in my App. However i find myself mostly 
>>>>>> using assisted inject because there is a chain of injected objects that 
>>>>>> all 
>>>>>> depend on what was the input of the program. 
>>>>>> Hence almost everything is assisted inject. 
>>>>>>
>>>>>> For instance A need B who need c who need Z which needs input from 
>>>>>> the command line. In the end i feel like everything will be assisted 
>>>>>> injected. So given that i'm stuck with it i want to be sure that i m 
>>>>>> using 
>>>>>> it right. 
>>>>>>
>>>>>> I personally feel like writing my own factories would be as good. 
>>>>>> Moreover, in addition to the same advantage i could further limit the 
>>>>>> creation of my objects in question to these factories. 
>>>>>>
>>>>>> Hence my question here is, how useful is it really to use assisted 
>>>>>> inject, is it only the idea of having things assisted and non assisted 
>>>>>> as 
>>>>>> the same time? What if like in my case you have only have assisted 
>>>>>> parameters?
>>>>>>
>>>>>> Their must be some gain at organizing it with assisted injection. I 
>>>>>> just don't see it. 
>>>>>>
>>>>>> If anyone could enlighten me here, i would greatly i appreciate, 
>>>>>>
>>>>>> May thanks 
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "google-guice" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>
>>>>>  -- 
>>>>> You received this message because you are subscribed to a topic in the 
>>>>> Google Groups "google-guice" group.
>>>>> To unsubscribe from this topic, visit 
>>>>> https://groups.google.com/d/topic/google-guice/c9fipvWw1j8/unsubscribe
>>>>> .
>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>> [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "google-guice" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected] <javascript:>.
>>>> To post to this group, send email to 
>>>> [email protected]<javascript:>
>>>> .
>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>  -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "google-guice" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/google-guice/c9fipvWw1j8/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected] <javascript:>.
>>> To post to this group, send email to [email protected]<javascript:>
>>> .
>>> Visit this group at http://groups.google.com/group/google-guice.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "google-guice" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/google-guice.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to