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

li.rudin.jooq.cdi.extension.DSLContextBean Maven / Gradle / Ivy

The newest version!
package li.rudin.jooq.cdi.extension;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.PassivationCapable;

import li.rudin.jooq.cdi.DatabaseConfiguration;

import org.jooq.DSLContext;
import org.jooq.impl.DSL;

public class DSLContextBean implements Bean, PassivationCapable
{

	private final BeanManager bm;
	
	private final Set qualifiers;
	
	private final Bean bean;
	
	private DSLConnectionProvider connectionProvider;
	
	public DSLContextBean(BeanManager bm, Bean bean, Set qualifiers)
	{
		this.bm = bm;
		this.bean = bean;
		this.qualifiers = qualifiers;
	}
	
	@Override
	public DSLContext create(CreationalContext creationalContext)
	{
		DatabaseConfiguration config = (DatabaseConfiguration)bm.getReference(bean, bean.getBeanClass(), creationalContext);

		DSLContext ctx = DSL.using(config.getDialect());
		
		connectionProvider = new DSLConnectionProvider(config);
		ctx.configuration().set(connectionProvider);

		return ctx;
	}

	@Override
	public void destroy(DSLContext instance, CreationalContext creationalContext)
	{
		connectionProvider.close();
	}

	@Override
	public Set getTypes()
	{
		Set set = new HashSet<>();
		set.add(Object.class);
		set.add(DSLContext.class);
		return set;
	}

	@Override
	public Set getQualifiers()
	{
		return qualifiers;
	}

	@Override
	public Class getScope()
	{
		return ApplicationScoped.class;
	}

	@Override
	public String getName()
	{
		return null;
	}

	@Override
	public Set> getStereotypes()
	{
		return Collections.emptySet();
	}

	@Override
	public boolean isAlternative()
	{
		return false;
	}

	@Override
	public Class getBeanClass()
	{
		return DSLContext.class;
	}

	@Override
	public Set getInjectionPoints()
	{
		return Collections.emptySet();
	}

	@Override
	public boolean isNullable()
	{
		return false;
	}

	@Override
	public String getId() {
		return this.hashCode() + "";
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy