/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.jpa; import com.google.common.base.Supplier; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.FlushModeType; import javax.persistence.LockModeType; import javax.persistence.Query; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.metamodel.Metamodel; import java.io.Serializable; import java.util.Map; /** * Посредник EntityManager для JPA Container. */ final class EntityManagerProxy implements EntityManager, Serializable { final private Supplier<EntityManager> supplier; EntityManagerProxy(Supplier<EntityManager> supplier) { this.supplier = supplier; } final EntityManager getEm() { return supplier.get(); } @Override public void persist(Object o) { getEm().persist(o); } @Override public <T> T merge(T t) { return getEm().merge(t); } @Override public void remove(Object o) { getEm().remove(o); } @Override public <T> T find(Class<T> tClass, Object o) { return getEm().find(tClass, o); } @Override public <T> T find(Class<T> tClass, Object o, Map<String, Object> stringObjectMap) { return getEm().find(tClass, o, stringObjectMap); } @Override public <T> T find(Class<T> tClass, Object o, LockModeType lockModeType) { return getEm().find(tClass, o, lockModeType); } @Override public <T> T find(Class<T> tClass, Object o, LockModeType lockModeType, Map<String, Object> stringObjectMap) { return getEm().find(tClass, o, lockModeType, stringObjectMap); } @Override public <T> T getReference(Class<T> tClass, Object o) { return getEm().getReference(tClass, o); } @Override public void flush() { getEm().flush(); } @Override public void setFlushMode(FlushModeType flushModeType) { getEm().setFlushMode(flushModeType); } @Override public FlushModeType getFlushMode() { return getEm().getFlushMode(); } @Override public void lock(Object o, LockModeType lockModeType) { getEm().lock(o, lockModeType); } @Override public void lock(Object o, LockModeType lockModeType, Map<String, Object> stringObjectMap) { getEm().lock(o, lockModeType, stringObjectMap); } @Override public void refresh(Object o) { getEm().refresh(o); } @Override public void refresh(Object o, Map<String, Object> stringObjectMap) { getEm().refresh(o, stringObjectMap); } @Override public void refresh(Object o, LockModeType lockModeType) { getEm().refresh(o, lockModeType); } @Override public void refresh(Object o, LockModeType lockModeType, Map<String, Object> stringObjectMap) { getEm().refresh(o, lockModeType, stringObjectMap); } @Override public void clear() { getEm().clear(); } @Override public void detach(Object o) { getEm().detach(o); } @Override public boolean contains(Object o) { return getEm().contains(o); } @Override public LockModeType getLockMode(Object o) { return getEm().getLockMode(o); } @Override public void setProperty(String s, Object o) { getEm().setProperty(s, o); } @Override public Map<String, Object> getProperties() { return getEm().getProperties(); } @Override public Query createQuery(String s) { return getEm().createQuery(s); } @Override public <T> TypedQuery<T> createQuery(CriteriaQuery<T> tCriteriaQuery) { return getEm().createQuery(tCriteriaQuery); } @Override public <T> TypedQuery<T> createQuery(String s, Class<T> tClass) { return getEm().createQuery(s, tClass); } @Override public Query createNamedQuery(String s) { return getEm().createNamedQuery(s); } @Override public <T> TypedQuery<T> createNamedQuery(String s, Class<T> tClass) { return getEm().createNamedQuery(s, tClass); } @Override public Query createNativeQuery(String s) { return getEm().createNativeQuery(s); } @Override public Query createNativeQuery(String s, Class aClass) { return getEm().createNativeQuery(s, aClass); } @Override public Query createNativeQuery(String s, String s2) { return getEm().createNativeQuery(s, s2); } @Override public void joinTransaction() { getEm().joinTransaction(); } @Override public <T> T unwrap(Class<T> tClass) { return getEm().unwrap(tClass); } @Override public Object getDelegate() { return getEm().getDelegate(); } @Override public void close() { getEm().close(); } @Override public boolean isOpen() { return getEm().isOpen(); } @Override public EntityTransaction getTransaction() { return getEm().getTransaction(); } @Override public EntityManagerFactory getEntityManagerFactory() { return getEm().getEntityManagerFactory(); } @Override public CriteriaBuilder getCriteriaBuilder() { return getEm().getCriteriaBuilder(); } @Override public Metamodel getMetamodel() { return getEm().getMetamodel(); } }