
li.rudin.jooq.cdi.extension.JooqExtension Maven / Gradle / Ivy
The newest version!
package li.rudin.jooq.cdi.extension;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.Annotated;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessBean;
import li.rudin.jooq.cdi.DatabaseConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JooqExtension implements Extension
{
private static final Logger logger = LoggerFactory.getLogger(JooqExtension.class);
private List> confgBeans = new ArrayList<>();
void collect(@Observes ProcessBean extends DatabaseConfiguration> event)
{
Annotated annotated = event.getAnnotated();
//Register config beans
if (annotated.isAnnotationPresent(ApplicationScoped.class))
{
logger.debug("Adding config to index: '{}'", event.getBean().getBeanClass());
confgBeans.add(event.getBean());
}
}
void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager bm)
{
for (Bean extends DatabaseConfiguration> bean: confgBeans)
{
Set qualifiers = bean.getQualifiers();
logger.debug("Creating DSLContext bean for qualifiers: {}", qualifiers);
DSLContextBean contextBean = new DSLContextBean(bm, bean, qualifiers);
abd.addBean(contextBean);
abd.addBean(new ConnectionBean(bm, contextBean, qualifiers));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy