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