Hi Stanton,

I dont think the order of the contributors is necessary here so change
it to Set should be fine. What scenario you have in mind to do this?

- Henry

On Wed, Nov 2, 2011 at 4:09 AM, Stanton Sievers <ssiev...@us.ibm.com> wrote:
> Thanks for finding that thread.  That is the exact problem I'm running
> into.  As the thread suggests and as I've confirmed with some simple
> testing, annotations solve the problem.
>
> -Stanton
>
>
>
> From:   "Ciancetta, Jesse E." <jc...@mitre.org>
> To:     "dev@shindig.apache.org" <dev@shindig.apache.org>,
> Date:   11/02/2011 01:04
> Subject:        RE: Injecting global config contributors for the default
> config process
>
>
>
>>-----Original Message-----
>>From: Stanton Sievers [mailto:ssiev...@us.ibm.com]
>>Sent: Monday, October 31, 2011 2:26 PM
>>To: dev@shindig.apache.org
>>Subject: RE: Injecting global config contributors for the default config
> process
>>
>>I just noticed one caveat with using the Multibinder.  I'm doing this:
>>
>>    Multibinder<ConfigContributor> configBinder =
> Multibinder.newSetBinder
>>(binder(), ConfigContributor.class);
>>    configBinder.addBinding().to(GlobalConfigContributor.class);
>>
>>Now in DefaultConfigProcessor.setGlobalContributors, I'm getting the
>>GlobalConfigContributor class I've bound here as well as all of the
> values
>>of the MapBinder for String->ConfigContributor that is bound in the
>>DefaultConfigContributorModule.  I have to add an Annotation when I do
>>Multibinder.newSetBinder to keep that from happening.  This doesn't
> happen
>>when I remove my Multibinder and only have the MapBinder... odd.  It's
>>like the MapBinder values are getting added to the Multibinder config
>>automatically.
>
> It sounds like this might be a bug in Guice -- I found this thread on the
> Guice discussion board which sounds similar to what you're describing:
>
> http://groups.google.com/group/google-guice/browse_thread/thread/934e30b7ed0da98f
>
>
>>Maybe that's why the original code is a List instead of a Set that uses
>>Multibinder.
>>
>>-Stanton
>>
>>
>>
>>From:   "Ciancetta, Jesse E." <jc...@mitre.org>
>>To:     "dev@shindig.apache.org" <dev@shindig.apache.org>,
>>Date:   10/31/2011 12:30
>>Subject:        RE: Injecting global config contributors for the default
>>config process
>>
>>
>>
>>>-----Original Message-----
>>>From: Stanton Sievers [mailto:ssiev...@us.ibm.com]
>>>Sent: Monday, October 31, 2011 8:12 AM
>>>To: dev@shindig.apache.org
>>>Subject: Injecting global config contributors for the default config
>>process
>>>
>>>Hi everyone,
>>>
>>>I've recently been looking at the ConfigContributor and ConfigProcessor
>>>code and the workflow for getting configuration code the JavaScript side
>>>of things.  In DefaultConfigProcessor there is a setGlobalContributors
>>>method that is injectable and takes a List<ConfigContributor> as a
>>>parameter.  How is this injectable via Guice?  I thought it could be
> done
>>>with Multibinder but that only seems to allow Set contributions.  What
> is
>>>the intended way to contribute a List<ConfigContributor> (or any List
> for
>>>that matter) with Guice?
>>
>>It looks like you can use a TypeLiteral to do this:
>>
>>http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions
>>
>>And if you search the Shindig codebase for usages of TypeLiteral you'll
>>find a few examples of where it is indeed being used to setup List's for
>>Guice injection.
>>
>>However this doesn't seem as flexible as using a Multibinder with a Set
>>though since with Multibinder it seems you can append to the Set across
>>any number of different Guice modules, and with the TypeLiteral approach
> I
>>don't think that's possible.
>>
>>I'm far from a Guice expert though so if someone has a better solution
>>please chime in.
>>
>>>I found this issue, however, the solution seems to be Multibinder. :)
>>>http://code.google.com/p/google-guice/issues/detail?id=37&can=2&q=
>>>
>>>If there's no good way to do this, I propose changing
>>>setGlobalContributors to take a Set<ConfigContributor> so that
>>Multibinder
>>>can be used.  I don't think order or duplicate entries really matter for
>>>this use case, so I don't see why a Set wouldn't work....
>>
>>Even though there does seem to be a workaround available I don't see any
>>reason why this shouldn't be a Set -- and by making it a Set we can use
>>Multibinder and gain the additional flexibility that buys us in terms of
>>being able to add to the bindings across multiple Guice modules.
>>
>>>Thanks,
>>>-Stanton
>>
>>
>>
>
>
>
>
>

Reply via email to