/** * */ package org.activejpa.jpa; import javax.persistence.EntityManagerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author ganeshs * */ public class JPAConfig { private final String name; private final EntityManagerProvider entityManagerProvider; private ThreadLocal<JPAContext> currentContext = new ThreadLocal<JPAContext>(); private static final Logger logger = LoggerFactory.getLogger(JPAConfig.class); public JPAConfig(String name, EntityManagerProvider provider) { this.name = name; this.entityManagerProvider = provider; } public void close() { try { if (entityManagerProvider.getEntityManagerFactory().isOpen()) { entityManagerProvider.getEntityManagerFactory().close(); } else { logger.info("Entity manager factory is not open"); } } catch (Exception e) { logger.warn("Failed while closing the entity manager factory", e); // Suppress exception and log } } public JPAContext getContext() { return getContext(false); } public JPAContext getContext(boolean readOnly) { JPAContext context = currentContext.get(); if (context == null) { context = new JPAContext(this, readOnly); currentContext.set(context); } return context; } protected void clearContext() { currentContext.remove(); } /** * @return the name */ public String getName() { return name; } public EntityManagerProvider getEntityManagerProvider() { return entityManagerProvider; } }