Hello,

I can't get JPA + Guice + Eclipselink to work. I've tried all solutions 
available, but this might be a bug:

    @Override
    protected void configure() {
        install(new JpaPersistModule(PERSISTENCE_UNIT_NAME));
        final MyInitializer initializer = new MyInitializer();
        requestInjection(initializer);
        initializer.go();
        System.out.println("next");
        install(new DaoModule());
    }

    private static class MyInitializer {
        @Inject
        public PersistService service;

        public void go() {
            System.out.println("OKAY 1");
            service.start();
            System.out.println("OKAY 2");
        }
    }

Prints:

Aug 13, 2013 10:20:53 PM com.google.inject.internal.MessageProcessor visit
> INFO: An exception was caught and reported. Message: 
> java.lang.NullPointerException
> java.lang.NullPointerException
>     at 
> de.chaosfisch.uploader.persistence.PersistenceModule$MyInitializer.go(PersistenceModule.java:53)
>     at 
> de.chaosfisch.uploader.persistence.PersistenceModule.configure(PersistenceModule.java:38)
>     at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
>     at 
> com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
>     at com.google.inject.AbstractModule.install(AbstractModule.java:118)
>     at 
> de.chaosfisch.uploader.UploaderModule.configure(UploaderModule.java:44)
>     at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
>     at 
> com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
>     at com.google.inject.spi.Elements.getElements(Elements.java:101)
>     at 
> com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
>     at 
> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
>     at com.google.inject.Guice.createInjector(Guice.java:95)
>     at com.google.inject.Guice.createInjector(Guice.java:72)
>     at 
> com.cathive.fx.guice.GuiceApplication.init(GuiceApplication.java:103)
>     at 
> com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:296)
>     at 
> com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
>     at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
>     at java.lang.Thread.run(Thread.java:724)
>
>
@Override
    protected void configure() {
        install(new JpaPersistModule(PERSISTENCE_UNIT_NAME));
        bind(MyInitializer.class).asEagerSingleton();
        System.out.println("next");
        install(new DaoModule());
        
bind(IAccountService.class).to(AccountServiceImpl.class).in(Singleton.class);
        
bind(IUploadService.class).to(UploadServiceImpl.class).in(Singleton.class);
        
bind(IPlaylistService.class).to(PlaylistServiceImpl.class).in(Singleton.class);
        
bind(ITemplateService.class).to(TemplateServiceImpl.class).in(Singleton.class);
    }

    private static class MyInitializer {
        @Inject
        public MyInitializer(final PersistService service) {
            System.out.println("OKAY 1");
            service.start();
            System.out.println("OKAY 2");
        }
    }

Prints:

next
> Exception in Application init method
> Exception in thread "main" java.lang.RuntimeException: Exception in 
> Application init method
>     at 
> com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:398)
>     at 
> com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
>     at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
>     at java.lang.Thread.run(Thread.java:724)
> Caused by: com.google.inject.CreationException: Guice creation errors:
>
> 1) Error in custom provider, java.lang.NullPointerException
>   while locating com.google.inject.persist.jpa.JpaPersistService
>   while locating javax.persistence.EntityManager
>     for field at 
> de.chaosfisch.uploader.persistence.dao.AccountDaoImpl.entityManager(AccountDaoImpl.java:25)
>   while locating de.chaosfisch.uploader.persistence.dao.AccountDaoImpl
>   at 
> de.chaosfisch.uploader.persistence.dao.DaoModule.configure(DaoModule.java:26)
>   while locating de.chaosfisch.uploader.persistence.dao.IAccountDao
>     for parameter 0 at 
> de.chaosfisch.uploader.persistence.AccountServiceImpl.<init>(AccountServiceImpl.java:25)
>   while locating de.chaosfisch.uploader.persistence.AccountServiceImpl
>   at 
> de.chaosfisch.uploader.persistence.PersistenceModule.configure(PersistenceModule.java:39)
>   while locating de.chaosfisch.google.account.IAccountService
>     for parameter 1 at 
> de.chaosfisch.google.youtube.upload.metadata.AbstractMetadataService.<init>(AbstractMetadataService.java:63)
>   while locating 
> de.chaosfisch.google.youtube.upload.metadata.AbstractMetadataService
>   at 
> de.chaosfisch.uploader.UploaderModule.mapServices(UploaderModule.java:79)
>   while locating 
> de.chaosfisch.google.youtube.upload.metadata.IMetadataService
>     for parameter 0 at 
> de.chaosfisch.uploader.persistence.UploadServiceImpl.<init>(UploadServiceImpl.java:28)
>   while locating de.chaosfisch.uploader.persistence.UploadServiceImpl
>   at 
> de.chaosfisch.uploader.persistence.PersistenceModule.configure(PersistenceModule.java:40)
>   while locating de.chaosfisch.google.youtube.upload.IUploadService
>     for field at 
> de.chaosfisch.uploader.GuiUploader.uploadService(GuiUploader.java:41)
>   at 
> com.cathive.fx.guice.GuiceApplication$1.configure(GuiceApplication.java:89)
> Caused by: java.lang.NullPointerException
>     at 
> com.google.inject.persist.jpa.JpaPersistService.begin(JpaPersistService.java:70)
>     at 
> com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:50)
>     at 
> com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:34)
>     at 
> com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:55)
>     at 
> com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53)
>     at 
> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
>     at 
> com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94)
>     at 
> com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
>     at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
>     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.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.FactoryProxy.get(FactoryProxy.java:54)
>     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.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.FactoryProxy.get(FactoryProxy.java:54)
>     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.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.FactoryProxy.get(FactoryProxy.java:54)
>     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.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:1024)
>     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)
>     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.cathive.fx.guice.GuiceApplication.init(GuiceApplication.java:103)
>     at 
> com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:296)
>     at 
> com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
>     at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
>     at java.lang.Thread.run(Thread.java:724)
>
 
I'm doing everything that is required. The singleton however isn't bound 
eagerly.
Bug?

Regards,
Dennis Fischer

-- 
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/groups/opt_out.


Reply via email to