I don't think this would be a good approach. And I am not even sure if guice would allow it. I would rather propose that every plugin comes with a Module which is then passed to the injector creation method.
This way every plugin can bind whatever it needs.
If multiple plugins try to bind the same thing you could always encapsulate a plugin in a private module and only expose a limited set of bindings.

If I miss the point here then maybe try to explain why you are passing bindings in properties files...



On 19.06.2018 16:45, 'Mariano Gonzalez' via google-guice wrote:
Thank you.

Yes I looked at Multibinders but this still requires the brute force approach. Each of my plugins can register any random object, I don't know the universe of interfaces before hand. I was more looking in the direction of somehow tapping into how the bindings are processed  so that when Guice realises that it cannot serve @Inject FooService I can catch that and calculate that binding on demand?

Is this or something like that possible?

Thanks

On Tuesday, June 19, 2018 at 11:36:08 AM UTC-3, scl wrote:

    You could have a look at multi binders.
    https://github.com/google/guice/wiki/Multibindings
    <https://github.com/google/guice/wiki/Multibindings>

    Then bind all possible implementations of an interface and use the
    value from the properties to select the one out of the set.



    On 19.06.2018 16:33, 'Mariano Gonzalez' via google-guice wrote:
    Hello,

    I have a case in which a portion of the binding are dynamically
    provided through a properties file with the following format:

    |
    exampleService=ExampleServiceImpl
    fooService=FooServiceImpl

    |

    Unlike Guice's approach, the key is not a type but an actual
    Name. For now, I'm just binding those concrete types to
    themselves, like
    /bind(FooServiceImpl.class).to(bindFooServiceImpl.class)/

    Of course this approach doesn't work because then the following
    injection would fail:

    |
    publicclassFoo{


    @Inject
    privateFooServicefooService;


    }
    |

    There's no default way in which Guice would figure out that
    FooService can actually be served by FooServiceImpl. The
    alternative that I have thought about so far is to introspect
    those types and generate bindings for each superclass and
    implemented interface.

    I was wondering is there's a less "brute force" approach.

    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 google-guice...@googlegroups.com <javascript:>.
    To post to this group, send email to google...@googlegroups.com
    <javascript:>.
    Visit this group at https://groups.google.com/group/google-guice
    <https://groups.google.com/group/google-guice>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/google-guice/7d2ec09b-9702-4615-85f2-82f47329c9b5%40googlegroups.com
    
<https://groups.google.com/d/msgid/google-guice/7d2ec09b-9702-4615-85f2-82f47329c9b5%40googlegroups.com?utm_medium=email&utm_source=footer>.
    For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>.

--
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 google-guice+unsubscr...@googlegroups.com <mailto:google-guice+unsubscr...@googlegroups.com>. To post to this group, send email to google-guice@googlegroups.com <mailto:google-guice@googlegroups.com>.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/c528fae0-28b9-41fa-a08f-7635416ff42f%40googlegroups.com <https://groups.google.com/d/msgid/google-guice/c528fae0-28b9-41fa-a08f-7635416ff42f%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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 google-guice+unsubscr...@googlegroups.com.
To post to this group, send email to google-guice@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/f2c8a553-ea1c-95c7-5e39-8cd319eb78fe%40gmx.ch.
For more options, visit https://groups.google.com/d/optout.

Reply via email to