
io.quarkus.hibernate.orm.runtime.cdi.QuarkusArcBeanContainer Maven / Gradle / Ivy
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package io.quarkus.hibernate.orm.runtime.cdi;
import javax.annotation.PreDestroy;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.resource.beans.container.spi.AbstractCdiBeanContainer;
import org.hibernate.resource.beans.container.spi.BeanLifecycleStrategy;
import org.hibernate.resource.beans.container.spi.ContainedBeanImplementor;
import org.hibernate.resource.beans.spi.BeanInstanceProducer;
@Singleton
public class QuarkusArcBeanContainer extends AbstractCdiBeanContainer {
@Inject
BeanManager beanManager;
@Override
public BeanManager getUsableBeanManager() {
return beanManager;
}
@Override
protected ContainedBeanImplementor createBean(Class beanType,
BeanLifecycleStrategy lifecycleStrategy, BeanInstanceProducer fallbackProducer) {
ContainedBeanImplementor bean = lifecycleStrategy.createBean(beanType, fallbackProducer, this);
bean.initialize();
return bean;
}
@Override
protected ContainedBeanImplementor createBean(String name, Class beanType,
BeanLifecycleStrategy lifecycleStrategy, BeanInstanceProducer fallbackProducer) {
ContainedBeanImplementor bean = lifecycleStrategy.createBean(name, beanType,
fallbackProducer, this);
bean.initialize();
return bean;
}
/**
* This will happen after Hibernate ORM is stopped;
* see io.quarkus.hibernate.orm.runtime.JPAConfig#destroy(java.lang.Object).
*/
@PreDestroy
public void destroy() {
stop();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy