I've opened (finally) an issue with a testcase for this: http://code.google.com/p/google-guice/issues/detail?id=594
<http://code.google.com/p/google-guice/issues/detail?id=594>keep up your amazing job with guice! jordi On Tue, Jan 18, 2011 at 6:41 PM, Sam Berlin <sber...@gmail.com> wrote: > Ya.. if you could open an issue, and even better: attach a testcase that > reproduces it. > > Thanks! > > sam > > On Tue, Jan 18, 2011 at 4:05 AM, jordi <jo...@donky.org> wrote: > >> Hey there! >> >> I'm using Guice-rc2 and I found this error using Assisted Inject... but >> the strange thing is that only happens when I bootstrap the injector with >> Stage.PRODUCTION >> >> This is what i'm doing: >> >> public interface Mailer {} >> >> public class SmtpMailer implements Mailer { >> @Inject >> public SmtpMailer(@Assisted MailConfig config) { ... } >> } >> >> The module config: >> >> install(new FactoryModuleBuilder() >> .implement(Mailer.class, SmtpMailer.class) >> .implement(Mailer.class, Simple.class, SimpleSmtpMailer.class) >> .build(MailerFactory.class)); >> >> And then I'm injecting the MailerFactory to get the instance: >> >> factory.create(gappsConfig); >> >> Do you want me to open an issue? >> >> hth, guice is truly amazing >> >> jordi >> >> -- >> >> Here's the full stacktrace: >> >> com.google.inject.CreationException: Guice creation errors: >> >> 1) Error in custom provider, java.lang.IllegalStateException: Cannot use >> optimized @Assisted provider outside the scope of the constructor. (This >> should never happen. If it does, please report it.) >> at com.eventuo.mail.MailerFactory.create(MailerFactory.java:1) >> while locating com.eventuo.mail.MailConfig annotated with >> @com.google.inject.assistedinject.Assisted(value=) >> for parameter 0 at >> com.eventuo.mail.SmtpMailer.<init>(SmtpMailer.java:38) >> at com.eventuo.mail.MailerFactory.create(MailerFactory.java:1) >> while locating com.eventuo.mail.Mailer annotated with interface >> com.google.inject.assistedinject.Assisted >> at >> com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:538) >> at >> com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:315) >> >> 1 error >> at >> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:416) >> 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:83) >> at >> com.eventuo.test.GuiceJUnitRunner.createInjector(GuiceJUnitRunner.java:35) >> at >> com.eventuo.test.GuiceJUnitRunner.createTest(GuiceJUnitRunner.java:25) >> at >> org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:258) >> at >> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) >> at >> org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:255) >> at >> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) >> at >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) >> at >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> at >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) >> at >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >> Caused by: java.lang.IllegalStateException: Cannot use optimized @Assisted >> provider outside the scope of the constructor. (This should never happen. >> If it does, please report it.) >> at >> com.google.inject.assistedinject.FactoryProvider2$ThreadLocalProvider.initialValue(FactoryProvider2.java:675) >> at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141) >> at java.lang.ThreadLocal.get(ThreadLocal.java:131) >> at >> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) >> at >> com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) >> at >> com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) >> at >> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84) >> at >> com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254) >> at >> com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) >> at >> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1021) >> 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.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204) >> at >> com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198) >> at >> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1021) >> at >> com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198) >> at >> com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179) >> at >> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109) >> at >> com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:217) >> at >> com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:224) >> at >> com.google.inject.assistedinject.FactoryProvider2.getBindingFromNewInjector(FactoryProvider2.java:600) >> at >> com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:555) >> at >> com.google.inject.assistedinject.FactoryProvider2$$FastClassByGuice$$9dcdf6d7.invoke(<generated>) >> at >> com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53) >> at >> com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56) >> at >> com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90) >> at >> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110) >> at >> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75) >> at >> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73) >> at >> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1014) >> at >> com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73) >> at >> com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147) >> at com.google.inject.internal.Initializer.injectAll(Initializer.java:92) >> at >> com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:173) >> ... 23 more >> >> -- >> You received this message because you are subscribed to the Google Groups >> "google-guice" group. >> To post to this group, send email to google-guice@googlegroups.com. >> To unsubscribe from this group, send email to >> google-guice+unsubscr...@googlegroups.com<google-guice%2bunsubscr...@googlegroups.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 google-guice@googlegroups.com. > To unsubscribe from this group, send email to > google-guice+unsubscr...@googlegroups.com<google-guice%2bunsubscr...@googlegroups.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 google-guice@googlegroups.com. To unsubscribe from this group, send email to google-guice+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.