
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 extends DatabaseConfiguration> bean;
private DSLConnectionProvider connectionProvider;
public DSLContextBean(BeanManager bm, Bean extends DatabaseConfiguration> 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 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 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