I agree. I will run it by the Guava folks, or come up with a hack myself. On Nov 6, 7:22 pm, Sam Berlin <[email protected]> wrote: > On Sat, Nov 6, 2010 at 8:13 PM, Dan Billings <[email protected]> wrote: > > Before I create an issue with Gauva: > > > Couldn't Guice cope with the methods of Object if they are, for > > whatever reason, declared in an interface? > > Guice (well, the assistedinject extensions) could... but IMO that'd be a > pretty big hack for one use-case. > > sam > > > > > > > > > > > On Nov 6, 6:54 pm, Sam Berlin <[email protected]> wrote: > > > I wonder if Function can just drop the equals method. It won't be a > > > backwards incompatible change, and I'm not certain how useful it actually > > > is. Certainly something to bring up with the Guava folks. > > > > sam > > > > On Sat, Nov 6, 2010 at 7:43 PM, Fred Faber <[email protected]> wrote: > > > > Dan, > > > > > I see what you're saying...and it's certainly an interesting question. > > > > > I'd file a FR for this as I see the utility of the integration w/ > > guava, > > > > especially given the prevalence of Function. > > > > > -Fred > > > > > On Sat, Nov 6, 2010 at 7:15 PM, Fred Faber <[email protected]> wrote: > > > > >> Sorry, I see now I misread your post. Let me have a re-read. > > > > >> On Sat, Nov 6, 2010 at 7:12 PM, Fred Faber <[email protected]> wrote: > > > > >>> Dan, > > > > >>> The problem is that you're trying to create a binding for a class > > that > > > >>> should only be created through its corresponding factory. This is > > why you > > > >>> see errors when binding your Function class itself. > > > > >>> What is the expectation you have w.r.t. injecting the Function? > > > > >>> -Fred > > > > >>> On Sat, Nov 6, 2010 at 7:07 PM, Dan Billings <[email protected]> > > wrote: > > > > >>>> I have bound them separately with: > > > bind(TestAssisted.Factory.class).toProvider(FactoryProvider.newFactory(Test > > Assisted.Factory.class, > > > >>>> TestAssisted.class)); > > > >>>> functionTypeLiteral = new > > TypeLiteral<Function<String, > > > >>>> TestAssisted>>() { > > > >>>> }; > > > > >>>> bind(functionTypeLiteral).to(TestAssisted.Factory.class); > > > > >>>> but I get the same error. Whatever process Guice is using to whip > > up > > > >>>> an implementation to the Assisted factory apparently can't handle > > > >>>> multiple methods, even if it is equals(Object). > > > > >>>> But I still want to use Function in the end. Only the module will > > > >>>> know that it is actually pointing to TestAssisted.Factory. > > > > >>>> On Nov 6, 5:53 pm, Fred Faber <[email protected]> wrote: > > > >>>> > Dan, > > > > >>>> > You shouldn't be binding the Function itself; instead, you're > > expected > > > >>>> to > > > >>>> > bind TestAssisted.Factory, which creates instances of your > > Function. > > > > >>>> > -Fred > > > > >>>> > On Sat, Nov 6, 2010 at 6:46 PM, Dan Billings <[email protected]> > > > >>>> wrote: > > > >>>> > > I'm attempting to short-circuit a lot of code by making my > > Factory > > > >>>> > > interfaces extend Guava's Function: > > >http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/co. > > > >>>> .. > > > > >>>> > > public class TestAssisted { > > > >>>> > > interface Factory extends Function<String, TestAssisted> {} > > > > >>>> > > �...@inject > > > >>>> > > public TestAssisted(@Assisted String contents){} > > > >>>> > > } > > > > >>>> > > I then bind it with: > > > >>>> > > bind(new TypeLiteral<Function<String,TestAssisted>>() > > > >>>> > > {}) .toProvider( FactoryProvider.newFactory( > > > >>>> > > TestAssisted.Factory.class,TestAssisted.class ); > > > > >>>> > > This seems to be okay, but Guice trips over Function's equal's > > > >>>> method: > > > > >>>> > > No implementation for java.lang.String annotated with > > > >>>> > > @com.google.inject.assistedinject.Assisted(value=) was bound. > > > >>>> > > while locating java.lang.String annotated with > > > >>>> > > @com.google.inject.assistedinject.Assisted(value=) > > > >>>> > > for parameter 0 at > > > com.billco.commons.test.TestAssisted.<init>(TestAssisted.java:18) > > > >>>> > > at com.google.common.base.Function.equals(Function.java:1) > > > > >>>> > > Do I have any options to have Guice more or less ignore the > > "equals" > > > >>>> > > method declared in Function? I can't think of a good way to > > stick to > > > >>>> > > interfaces and yet remove the necessity to implement "equals". > > > > >>>> > > Thanks for your help, > > > >>>> > > -Dan > > > > >>>> > > -- > > > >>>> > > 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]<google-guice%2bunsubscr...@google > > > >>>> > > groups.com> > > <google-guice%2bunsubscr...@google groups.com> > > > >>>> <google-guice%2bunsubscr...@google groups.com> > > > >>>> > > . > > > >>>> > > For more options, visit this group at > > > >>>> > >http://groups.google.com/group/google-guice?hl=en. > > > > >>>> -- > > > >>>> 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]<google-guice%2bunsubscr...@google > > > >>>> groups.com> > > <google-guice%2bunsubscr...@google groups.com> > > > >>>> . > > > >>>> For more options, visit this group at > > > >>>>http://groups.google.com/group/google-guice?hl=en. > > > > > -- > > > > 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]<google-guice%2bunsubscr...@google > > > > groups.com> > > <google-guice%2bunsubscr...@google groups.com> > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/google-guice?hl=en. > > > -- > > 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]<google-guice%2bunsubscr...@google > > groups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-guice?hl=en.
-- 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.
