package com.softwaremill.common.cdi.persistence; import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.Produces; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; /** * @author Adam Warski (adam at warski dot org) */ public class EntityManagerFactoryProducer { private static EntityManagerFactory staticEntityManagerFactory; @PersistenceUnit private EntityManagerFactory entityManagerFactory; @Produces @RequestScoped public EntityManagerFactory getEntityManagerFactory() { if (staticEntityManagerFactory != null) { return staticEntityManagerFactory; } return entityManagerFactory; } /** * Set an entity manager factory for testing. * @param staticEntityManagerFactory Entity manager factory that will be returned by this producer. */ public static void setStaticEntityManagerFactory(EntityManagerFactory staticEntityManagerFactory) { EntityManagerFactoryProducer.staticEntityManagerFactory = staticEntityManagerFactory; } }