/* * ============================================================================ * GNU Lesser General Public License * ============================================================================ * * Beanlet - JSE Application Container. * Copyright (C) 2006 Leon van Zantvoort * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Leon van Zantvoort * 243 Acalanes Drive #11 * Sunnyvale, CA 94086 * USA * * zantvoort@users.sourceforge.net * http://beanlet.org */ package org.beanlet.persistence.impl; import javax.persistence.*; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.metamodel.Metamodel; import org.beanlet.plugin.TransactionLocal; import java.util.Map; /** * This class is used internally and should never be passed to the client * application. This class has package private visibility. */ final class InternalEntityManager implements BeanletEntityManager { private final EntityManager em; private final TransactionLocal<Boolean> jtaAssociation = new TransactionLocal<Boolean>() { protected Boolean initialValue() { return Boolean.FALSE; } }; public InternalEntityManager(EntityManager em) { this.em = em; } public void persist(Object entity) { em.persist(entity); } public <T> T merge(T entity) { return em.merge(entity); } public void remove(Object entity) { em.remove(entity); } public <T> T find(Class<T> type, Object entity) { return em.find(type, entity); } public <T> T getReference(Class<T> type, Object entity) { return em.getReference(type, entity); } public void flush() { em.flush(); } public void setFlushMode(FlushModeType flushModeType) { em.setFlushMode(flushModeType); } public FlushModeType getFlushMode() { return em.getFlushMode(); } public void lock(Object object, LockModeType lockModeType) { em.lock(object, lockModeType); } public void refresh(Object entity) { em.refresh(entity); } public void clear() { em.clear(); } public boolean contains(Object entity) { return em.contains(entity); } public Query createQuery(String query) { return em.createQuery(query); } public Query createNamedQuery(String query) { return em.createNamedQuery(query); } public Query createNativeQuery(String query) { return em.createNativeQuery(query); } public Query createNativeQuery(String query, Class type) { return em.createNativeQuery(query, type); } public Query createNativeQuery(String string, String string0) { return em.createNativeQuery(string, string0); } public void joinTransaction() { em.joinTransaction(); jtaAssociation.set(true); BeanletPersistenceContext.setTransactionJoined(); } public Object getDelegate() { return em.getDelegate(); } public void close() { em.close(); } public boolean isOpen() { return em.isOpen(); } public EntityTransaction getTransaction() { return em.getTransaction(); } public boolean isTransactionJoined() { return jtaAssociation.get(); } public <T> TypedQuery<T> createNamedQuery(String name, Class<T> resultClass) { return em.createNamedQuery(name, resultClass); } public <T> T find(Class<T> entityClass, Object primaryKey, Map<String, Object> properties) { return em.find(entityClass, primaryKey, properties); } public <T> T find(Class<T> entityClass, Object primaryKey, LockModeType lockMode) { return em.find(entityClass, primaryKey, lockMode); } public <T> T find(Class<T> entityClass, Object primaryKey, LockModeType lockMode, Map<String, Object> properties) { return em.find(entityClass, primaryKey, lockMode, properties); } public void lock(Object entity, LockModeType lockMode, Map<String, Object> properties) { em.lock(entity, lockMode, properties); } public void refresh(Object entity, Map<String, Object> properties) { em.refresh(entity, properties); } public void refresh(Object entity, LockModeType lockMode) { em.refresh(entity, lockMode); } public void refresh(Object entity, LockModeType lockMode, Map<String, Object> properties) { em.refresh(entity, lockMode, properties); } public void detach(Object entity) { em.detach(entity); } public LockModeType getLockMode(Object entity) { return em.getLockMode(entity); } public void setProperty(String propertyName, Object value) { em.setProperty(propertyName, value); } public Map<String, Object> getProperties() { return em.getProperties(); } public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery) { return em.createQuery(criteriaQuery); } public <T> TypedQuery<T> createQuery(String qlString, Class<T> resultClass) { return em.createQuery(qlString, resultClass); } public <T> T unwrap(Class<T> cls) { return em.unwrap(cls); } public EntityManagerFactory getEntityManagerFactory() { return em.getEntityManagerFactory(); } public CriteriaBuilder getCriteriaBuilder() { return em.getCriteriaBuilder(); } public Metamodel getMetamodel() { return em.getMetamodel(); } }