quarkus: NPE when injecting EntityManager/EntityManagerFactory into ObjectMapperCustomizer

Describe the bug I implemented the Jackson ObjectMapperCustomizer and tried to @Inject the Hibernate EntityManager or EntityManagerFactory. On quarkus:dev startup, a NullPointerException gets thrown:

Caused by: java.lang.NullPointerException
	at io.quarkus.agroal.runtime.AbstractDataSourceProducer.getDataSourceBuildTimeConfig(AbstractDataSourceProducer.java:375)

Expected behavior Application should start, EM/EMF should get injected.

Actual behavior NPE, see description

To Reproduce Steps to reproduce the behavior:

  1. Check out https://github.com/HonoluluHenk/quarkus-bug-jacksoncustomizer-hibernate.git
  2. ./mvnw clean test
  3. Watch it crash&burn

Configuration N/A

Screenshots N/A

Environment (please complete the following information):

  • Quarkus version or git rev: 1.4.1.Final

Additional context Most specific stacktrace entry:

Caused by: java.lang.NullPointerException
        at io.quarkus.agroal.runtime.AbstractDataSourceProducer.getDataSourceBuildTimeConfig(AbstractDataSourceProducer.java:375)
        at io.quarkus.agroal.runtime.DataSourceProducer.createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595(DataSourceProducer.zig:31)
        at io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.create(DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.zig:354)
        at io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.create(DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.zig:297)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:79)
        at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
        at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
        at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
        at io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.get(DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.zig:269)
        at io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.get(DataSourceProducer_ProducerMethod_createDataSource_4c279770c59fa93dcf179ab15a1363f01f14f595_5923a8feaf2f425c7e2697f04d550dce98568e14_Bean.zig:41)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:380)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:393)
        at io.quarkus.arc.impl.ArcContainerImpl.instanceHandle(ArcContainerImpl.java:363)
        at io.quarkus.arc.impl.ArcContainerImpl.instance(ArcContainerImpl.java:200)
        at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.injectDataSource(FastBootHibernatePersistenceProvider.java:265)
        at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(FastBootHibernatePersistenceProvider.java:155)
        at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.createEntityManagerFactory(FastBootHibernatePersistenceProvider.java:48)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
        at io.quarkus.hibernate.orm.runtime.JPAConfig$LazyPersistenceUnit.get(JPAConfig.java:110)
        at io.quarkus.hibernate.orm.runtime.JPAConfig.getEntityManagerFactory(JPAConfig.java:43)
        at io.quarkus.hibernate.orm.runtime.JPAResourceReferenceProvider.lambda$get$0(JPAResourceReferenceProvider.java:26)
        at io.quarkus.arc.impl.ResourceProvider.get(ResourceProvider.java:36)
        at io.quarkus.hibernate.orm.runtime.DefaultEntityManagerFactoryProducer_Bean.create(DefaultEntityManagerFactoryProducer_Bean.zig:61)
        ... 78 more

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Comments: 20 (15 by maintainers)

Commits related to this issue

Most upvoted comments

I like the first solution a lot, it’s very straightforward! When I have some spare cycles I’ll look into it, but I think it should be possible.