package org.deephacks.westty.internal.jpa; import org.deephacks.confit.model.ThreadLocalManager; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; public class EntityManagerProducer { private EntityManagerFactory emf; @Inject public EntityManagerProducer(EntityManagerFactory emf) { this.emf = emf; } EntityManager get() { return ThreadLocalManager.peek(EntityManager.class); } EntityManager createEntityManager() { final EntityManager em = emf.createEntityManager(); ThreadLocalManager.push(EntityManager.class, em); return em; } void removeEntityManager() { EntityManager em = ThreadLocalManager.pop(EntityManager.class); if (em == null) throw new IllegalStateException( "Removing of entity manager failed. Your entity manager was not found."); } }