Oh :) That's pretty cool (though not obvious). I'll give it a go.Thanks, Gili Robbie Vanbrabant wrote: > No, Guice supports any annotation named "Nullable". So you can create > it yourself. This means you can also reuse IntelliJ IDEA's @Nullable, > for example. > > Robbie > > On Mon, Oct 27, 2008 at 1:14 AM, Gili Tzabari <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > > > That's odd. Why does Nullable only exist in test/com/google/inject? > I was going to try Jesse's snapshot20081016 but it doesn't include > this > class. I suspect he only included files compiled from src/* > > Gili > > Robbie Vanbrabant wrote: > > Guice trunk has support for @Nullable. > > @Inject > > public MyClass(Some param, @Nullable Other param) { ... } > > > > Robbie > > > > On Sun, Oct 26, 2008 at 10:39 PM, Gili Tzabari > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> > wrote: > > > > > > > > The problem is that JAX-RS knows how to inject some > classes, Guice > > the others, and there is no way for me to use constructor > injection > > where some objects come from Guice and others from JAX-RS. > At least, I > > don't know how this could be done. > > > > As for the package-private constructor approach, I'd want to > > use one > > constructor for production (without UriInfo) and another one for > > testing > > (with UriInfo) and Guice injecting both of them (which you > can't do). > > > > Would it be possible to have a single Guice-injected > constructor > > that includes objects such as UriInfo which Guice doesn't > know how to > > inject, then telling Guice to simply bind them to null at > production > > time and a mock object at testing time? Somehow I suspect Guice > > doesn't > > let you inject null... > > > > Gili > > > > Robbie Vanbrabant wrote: > > > In general you should dependency inject it, using constructor > > > injection or method injection. > > > Field injection is only a good idea in code that you don't > need to > > > test. I would image that JAX-RS does more than just field > injection? > > > If that doesn't work, you could add a constructor and make it > > package > > > private. Or create a builder using a library that makes it > easy > > > (shameless self-promotion: http://tinyurl.com/builderbuilder). > > > > > > Robbie > > > > > > On Sun, Oct 26, 2008 at 9:52 PM, Gili > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> > > > <mailto:[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>>>> > > wrote: > > > > > > > > > Hi, > > > > > > I've got code that runs on top of JAX-RS and Guice. All my > > classes use > > > construction injection. One such class has the > following field: > > > > > > @Context UriInfo uri; > > > > > > that is injected after-the-fact by JAX-RS. > > > > > > When I try unit testing this code I run into a problem > > because I'm not > > > sure how to inject a mock object in place of "uri". > Guice isn't > > > injecting it in the first place. I was thinking of adding > > UriInfo to > > > the constructor and making it optional but Guice doesn't > > support that > > > sort of thing. Alternatively I could add a setUri() method > > to be used > > > exclusively by the test framework but this seems a bit > ugly. > > > > > > I'm new to unit testing. I would appreciate some advice. > > > > > > Thank you, > > > Gili > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
