Great, thanks for the confirmation! sam On Fri, Oct 21, 2011 at 5:18 PM, Michael Burton <[email protected]> wrote:
> Snapshot fixes it, thanks Sam! > > -- > http://about.me/michaelburton > > > > > > > On Oct 21, 2011, at 7:34 PM, Sam Berlin wrote: > > (But, if you still experience the bug with the latest code from Git, please > reopen the bug or create a new one!) > sam > > On Fri, Oct 21, 2011 at 1:33 PM, Sam Berlin <[email protected]> wrote: > >> This looks like the bug fixed by >> http://code.google.com/p/google-guice/source/detail?r=6b7e7187bd074d3f2df9b04e17fa01e7592f295c >> (issue http://code.google.com/p/google-guice/issues/detail?id=627). >> >> It seems to be a super old bug that's been present at least since Guice 2 >> and possibly before. The test added in the fix should explain what causes >> it. >> >> sam >> >> >> On Fri, Oct 21, 2011 at 1:08 PM, Michael Burton <[email protected]> wrote: >> >>> A user of RoboGuice ran into the following error awhile back. As best we >>> can tell, it appears this might be a bug in Guice3? Can anyone explain what >>> might be the issue if we're doing anything wrong? >>> >>> Here's the code: >>> >>> import com.google.inject.AbstractModule; >>> import com.google.inject.Guice; >>> import com.google.inject.Inject; >>> import com.google.inject.Provider; >>> import com.google.inject.TypeLiteral; >>> import com.google.inject.matcher.Matchers; >>> import com.google.inject.spi.TypeEncounter; >>> import com.google.inject.spi.TypeListener; >>> >>> public class GuiceTest { >>> >>> public static void main(String[] args) { >>> TestApp testApp = new TestApp(); >>> Guice.createInjector(new MyModule1(testApp), new MyModule2(testApp)); >>> } >>> >>> private static class BaseApp { >>> } >>> >>> >>> // Extends BaseApp >>> private static class TestApp extends BaseApp { >>> } >>> >>> >>> >>> private static class MyModule1 extends AbstractModule { >>> >>> private final BaseApp app; >>> >>> public MyModule1(BaseApp app) { >>> this.app = app; >>> } >>> >>> @Override >>> protected void configure() { >>> bind(BaseApp.class).toInstance(app); >>> bindListener(Matchers.any(), new MyListener()); >>> requestStaticInjection(SomeOtherClass.class); >>> } >>> } >>> >>> private static class MyModule2 extends AbstractModule { >>> >>> private final TestApp app; >>> >>> public MyModule2(TestApp app) { >>> this.app = app; >>> } >>> >>> // Does nothing other than binding app to TestApp, which is a binding >>> that's never used >>> @Override >>> protected void configure() { >>> bind(TestApp.class).toInstance(app); >>> } >>> } >>> >>> // Just an empty listener >>> private static class MyListener implements TypeListener { >>> public <I> void hear(TypeLiteral<I> iTypeLiteral, TypeEncounter<I> >>> iTypeEncounter) { >>> } >>> } >>> >>> private static class SomeOtherClass { >>> >>> @Inject static BaseApp app; >>> >>> } >>> } >>> >>> >>> >>> >>> When you compile and run, you'll get the following error: >>> >>> $ javac -cp >>> /Users/mike/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/mike/.m2/repository/com/google/inject/guice/3.0/guice-3.0-no_aop.jar:/Users/mike/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar >>> GuiceTest.java >>> $ java -cp >>> /Users/mike/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/mike/.m2/repository/com/google/inject/guice/3.0/guice-3.0-no_aop.jar:/Users/mike/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:. >>> GuiceTest >>> >>> Exception in thread "main" com.google.inject.CreationException: Guice >>> creation errors: >>> >>> 1) Error in custom provider, java.lang.NullPointerException >>> at GuiceTest$MyModule1.configure(GuiceTest.java:37) >>> while locating GuiceTest$BaseApp >>> for field at GuiceTest$SomeOtherClass.app(Unknown Source) >>> >>> 1 error >>> at >>> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435) >>> at >>> com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:175) >>> at >>> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109) >>> at com.google.inject.Guice.createInjector(Guice.java:95) >>> at com.google.inject.Guice.createInjector(Guice.java:72) >>> at com.google.inject.Guice.createInjector(Guice.java:62) >>> at GuiceTest.main(GuiceTest.java:14) >>> Caused by: java.lang.NullPointerException >>> at >>> com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147) >>> at >>> com.google.inject.internal.ConstantFactory.get(ConstantFactory.java:35) >>> at >>> com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) >>> at >>> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) >>> at >>> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) >>> at com.google.inject.Scopes$1$1.get(Scopes.java:65) >>> at >>> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) >>> at >>> com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53) >>> at >>> com.google.inject.internal.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:116) >>> at >>> com.google.inject.internal.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:110) >>> at >>> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) >>> at >>> com.google.inject.internal.InjectionRequestProcessor$StaticInjection.injectMembers(InjectionRequestProcessor.java:110) >>> at >>> com.google.inject.internal.InjectionRequestProcessor.injectMembers(InjectionRequestProcessor.java:78) >>> at >>> com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:170) >>> ... 5 more >>> >>> >>> Cheers, >>> Mike >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "google-guice" group. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msg/google-guice/-/CxXJN4nQwCsJ. >>> 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. >>> >> >> > > -- > 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. > > > -- > 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. > -- 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.
