package br.com.triadworks.issuetracker.entitymanager.provider;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.Specializes;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.conventionsframework.producer.DefaultEntityManagerProducer;
@RequestScoped
@Specializes
public class IssueTrackerProvider extends DefaultEntityManagerProducer{
private EntityManager entityManager;
public IssueTrackerProvider(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("issueTrackerPU");
entityManager = emf.createEntityManager();
}
/**
* The producer is required so CODI can handlle @Transactional methods and
* also conventions needs for entity manager injection in BaseService
*/
@Produces
@RequestScoped
public EntityManager getEntityManager() {
return entityManager;
}
public void dispose(@Disposes EntityManager entityManager){
if(entityManager.isOpen()){
entityManager.close();
}
}
}