Good stuff. On Apr 17, 2014 2:15 PM, "Todd Nine" <[email protected]> wrote:
> I'll answer my own question for those that read this thread :) > > I incorrectly defined the impl, when in fact I should be using the key. > When I'm also using several different implementations distinguished by an > Annotation, I also need to include this annotation in my key. Here is the > gist demonstrating this. > > > https://gist.github.com/tnine/d5b569c6641808488eb6#file-graphmodule-java-L104 > > In case it gets lost, here is the code snippit as well. > > //do multibindings for migrations > Multibinder<Migration> migrationBinding = Multibinder.newSetBinder( > binder(), Migration.class ); > migrationBinding.addBinding().to( Key.get( NodeSerialization.class ) > ); > migrationBinding.addBinding().to( Key.get( > EdgeMetadataSerialization.class ) ); > > //bind each singleton to the multi set. Otherwise we won't migrate > properly > migrationBinding.addBinding().to( Key.get( EdgeSerialization.class, > PermanentStorage.class ) ); > migrationBinding.addBinding().to( Key.get( EdgeSerialization.class, > CommitLog.class ) ); > > > On Thursday, April 17, 2014 8:17:59 AM UTC-7, Todd Nine wrote: >> >> Hey Fred, >> Thanks for the reply. I've just tried your suggestion. I've made my >> Serialization interfaces extend Migration temporarily so that the set >> inclusion compiles. >> >> https://gist.github.com/tnine/d5b569c6641808488eb6#file- >> graphmodule-java-L98 >> >> The providers aren't getting invoked when I do it like this, am I doing >> something incorrectly? Feel free to edit the gist to correct my impl. >> >> Thanks, >> Todd >> >> >> >> On Wednesday, April 16, 2014 5:36:13 PM UTC-7, Fred Faber wrote: >>> >>> I see and injection of 'Set<Migration>' where the elements of this set >>> are EdgeMetadataSerializationImpl and NodeSerializationImpl >>> >>> To trigger the provider methods that return instances of these types, >>> Guice needs to recognize the binding chain. In this case, you'd contribute >>> EdgeMetadataSerialization to the set, which itself is bound to >>> EdgeMetadataSerializationImpl, and that will trigger the provider method. >>> >>> For (2), not really. But it's generally good to be explicit, and that is >>> an underlying benefit. >>> >>> >>> On Wed, Apr 16, 2014 at 7:49 PM, Todd Nine <[email protected]> wrote: >>> >>>> Hi all, >>>> I'm creating an application that has some complex binding, and I'm >>>> running into an issue I could use a hand with. Here is my module. >>>> >>>> >>>> https://github.com/usergrid/usergrid/blob/ >>>> 99fd1e50cdb523ac463e3949e99a7f8103f37a56/stack/ >>>> corepersistence/graph/src/main/java/org/apache/usergrid/ >>>> persistence/graph/guice/GraphModule.java#L98 >>>> >>>> Several of my serialization classes implement 2 interfaces. The first >>>> is their associated serialization interface, the other is the interface >>>> "Migration". I then have a MigrationManagerImpl that takes a set of these >>>> Migration interfaces in it's constructor. When an administrator triggers >>>> an update, each Migration is invoked by the MigrationManager in the correct >>>> order. What I have above worked previously. However, now I have two >>>> instances of serialization for the edges. One is used as commit log for >>>> fast writes, the other is used in post processing to compact edges into >>>> shards based on the shard size for long term storage and faster seeks. >>>> >>>> https://github.com/usergrid/usergrid/blob/ >>>> 99fd1e50cdb523ac463e3949e99a7f8103f37a56/stack/ >>>> corepersistence/graph/src/main/java/org/apache/usergrid/ >>>> persistence/graph/guice/GraphModule.java#L146 >>>> >>>> https://github.com/usergrid/usergrid/blob/ >>>> 99fd1e50cdb523ac463e3949e99a7f8103f37a56/stack/ >>>> corepersistence/graph/src/main/java/org/apache/usergrid/ >>>> persistence/graph/guice/GraphModule.java#L172 >>>> >>>> >>>> I'm facing 2 issues now. >>>> >>>> 1) The provider methods in my module are never invoked, so the multi >>>> binding never seems to occur. >>>> >>>> >>>> 2) Rather than have 2 instances of each of these serializers (one for >>>> the use in DI and one in the Multibinding), is there a way I can get a list >>>> of existing singleton instances that implement the Migration interface, and >>>> inject them in my MigrationManagerImpl without having to do duplicate >>>> bindings? >>>> >>>> Thanks, >>>> Todd >>>> >>>> >>>> -- >>>> 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/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 [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/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 [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/d/optout.
