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

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

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

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.sql.Connection;
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 org.jooq.DSLContext;

public class ConnectionBean implements Bean, PassivationCapable
{

	private final BeanManager bm;

	private final Set qualifiers;

	private final Bean bean;

	public ConnectionBean(BeanManager bm, Bean bean, Set qualifiers)
	{
		this.bm = bm;
		this.bean = bean;
		this.qualifiers = qualifiers;
	}

	@Override
	public Connection create(CreationalContext creationalContext)
	{
		DSLContext config = (DSLContext)bm.getReference(bean, bean.getBeanClass(), creationalContext);

		return config.configuration().connectionProvider().acquire();
	}

	@Override
	public void destroy(Connection instance, CreationalContext creationalContext)
	{
		try
		{
			instance.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();//TODO
		}
	}

	@Override
	public Set getTypes()
	{
		Set set = new HashSet<>();
		set.add(Object.class);
		set.add(Connection.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 Connection.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