All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 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 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