import java.sql.Connection; import org.apache.openjpa.persistence.OpenJPAEntityManager; import org.apache.openjpa.persistence.OpenJPAPersistence; public final class MsSqlDaoFactory { public static final Connection getConnection(final EntityManager entityManager) { OpenJPAEntityManager openJPAEntityManager = OpenJPAPersistence.cast(entityManager); Connection connection = (Connection) openJPAEntityManager.getConnection(); return connection; } }
@Override public void releaseSavepoint(final Object savepoint) throws TransactionException { try { this.entityManager.releaseSavepoint((String) savepoint); } catch (Throwable ex) { LogFactory.getLog(OpenJpaTransactionData.class).debug( "Could not explicitly release OpenJPA savepoint", ex); } } }
@Override public void rollbackToSavepoint(Object savepoint) throws TransactionException { this.entityManager.rollbackToSavepoint((String) savepoint); }
/** * Returns the current Compass session associated with the {@link javax.persistence.EntityManager}. * Compass Session is associated with an Entity Manager when a transaction is started and removed when the * transaction commits/rollsback. * * <p>The session can be used to perform searches that needs to take into account current transactional changes * or to perform additional Compass operations that are not reflected by the mirroring feature. */ public static CompassSession getCurrentCompassSession(EntityManager em) { EntityManager nativeEm = NativeJpaHelper.extractNativeJpa(em); OpenJPAEntityManager openJPAEntityManager = OpenJPAPersistence.cast(nativeEm); return (CompassSession) openJPAEntityManager.getUserObject(CompassProductDerivation.COMPASS_SESSION_USER_OBJECT_KEY); }
public RuntimeException translate(RuntimeException re) { RuntimeException ex = toPersistenceException(re); if (!(ex instanceof NonUniqueResultException) && !(ex instanceof NoResultException) && !throwing) { try { throwing = true; if (em.isOpen() && ((EntityManagerImpl) em).isActive()) ((EntityManagerImpl) em).setRollbackOnly(re); } finally { // handle re-entrancy throwing = false; } } return ex; } };
@Override public Object beginTransaction(final EntityManager entityManager, final TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException { OpenJPAEntityManager openJpaEntityManager = getOpenJPAEntityManager(entityManager); if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) { // Pass custom isolation level on to OpenJPA's JDBCFetchPlan configuration FetchPlan fetchPlan = openJpaEntityManager.getFetchPlan(); if (fetchPlan instanceof JDBCFetchPlan) { IsolationLevel isolation = IsolationLevel.fromConnectionConstant(definition.getIsolationLevel()); ((JDBCFetchPlan) fetchPlan).setIsolation(isolation); } } entityManager.getTransaction().begin(); if (!definition.isReadOnly()) { // Like with EclipseLink, make sure to start the logic transaction early so that other // participants using the connection (such as JdbcTemplate) run in a transaction. openJpaEntityManager.beginStore(); } // Custom implementation for OpenJPA savepoint handling return new OpenJpaTransactionData(openJpaEntityManager); }
pushFetchPlan(em); try { Object pc = em.find(meta.getDescribedType(), oid); if (pc != null) { OpenJPAStateManager sm = toStateManager(pc); ctx.getResponse().setContentType(formatter.getMimeType()); try { formatter.writeOut(Collections.singleton(sm), em.getMetamodel(), _loc.get("find-title").toString(), _loc.get("find-desc").toString(), ctx.getRequestURI(), ctx.getResponse().getOutputStream());
@Override public Object createSavepoint() throws TransactionException { this.savepointCounter++; String savepointName = ConnectionHolder.SAVEPOINT_NAME_PREFIX + this.savepointCounter; this.entityManager.setSavepoint(savepointName); return savepointName; }
@SuppressWarnings({"unchecked"}) private void reindexOid(OpenJPAId oid, OpenJPAEntityManager em, CompassSession session) { try { Object o = em.find(oid.getType(), oid.getIdObject()); reindex(o, session); } catch (EntityNotFoundException e) { delete(oid, session); } }
/** * Return the underlying broker for the given entity manager facade. */ public static Broker toBroker(EntityManager em) { if (em == null) return null; if (!(em instanceof EntityManagerImpl)) { Class c = em.getClass(); try { // either cast here may fail em = (EntityManagerImpl) ((OpenJPAEntityManager) em). getUserObject(EM_KEY); } catch (ClassCastException cce) { throw new ArgumentException(_loc.get("cant-convert-broker", c), new Throwable[] { cce }, null, false); } } return ((EntityManagerImpl) em).getBroker(); }
public RuntimeException translate(RuntimeException re) { RuntimeException ex = toPersistenceException(re); if (!(ex instanceof NonUniqueResultException) && !(ex instanceof NoResultException) && !(ex instanceof LockTimeoutException) && !(ex instanceof QueryTimeoutException) && !throwing) { try { throwing = true; if (em.isOpen() && ((EntityManagerImpl) em).isActive()) ((EntityManagerImpl) em).setRollbackOnly(ex); } finally { // handle re-entrancy throwing = false; } } return ex; } };
@Override public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException { OpenJPAEntityManager openJpaEntityManager = getOpenJPAEntityManager(entityManager); if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) { // Pass custom isolation level on to OpenJPA's JDBCFetchPlan configuration FetchPlan fetchPlan = openJpaEntityManager.getFetchPlan(); if (fetchPlan instanceof JDBCFetchPlan) { IsolationLevel isolation = IsolationLevel.fromConnectionConstant(definition.getIsolationLevel()); ((JDBCFetchPlan) fetchPlan).setIsolation(isolation); } } entityManager.getTransaction().begin(); if (!definition.isReadOnly()) { // Like with EclipseLink, make sure to start the logic transaction early so that other // participants using the connection (such as JdbcTemplate) run in a transaction. openJpaEntityManager.beginStore(); } // Custom implementation for OpenJPA savepoint handling return new OpenJpaTransactionData(openJpaEntityManager); }
@Override public Object createSavepoint() throws TransactionException { this.savepointCounter++; String savepointName = ConnectionHolder.SAVEPOINT_NAME_PREFIX + this.savepointCounter; this.entityManager.setSavepoint(savepointName); return savepointName; }
import java.sql.Connection; import org.apache.openjpa.persistence.OpenJPAEntityManager; import org.apache.openjpa.persistence.OpenJPAPersistence; public final class MsSqlDaoFactory { public static final Connection getConnection(final EntityManager entityManager) { OpenJPAEntityManager openJPAEntityManager = OpenJPAPersistence.cast(entityManager); Connection connection = (Connection) openJPAEntityManager.getConnection(); return connection; } }
/** * Return the underlying broker for the given entity manager facade. */ public static Broker toBroker(EntityManager em) { if (em == null) return null; if (!(em instanceof EntityManagerImpl)) { Class c = em.getClass(); try { // either cast here may fail em = (EntityManagerImpl) ((OpenJPAEntityManager) em). getUserObject(EM_KEY); } catch (ClassCastException cce) { throw new ArgumentException(_loc.get("cant-convert-broker", c), new Throwable[] { cce }, null, false); } } return ((EntityManagerImpl) em).getBroker(); }
public RuntimeException translate(RuntimeException re) { RuntimeException ex = toPersistenceException(re); if (!(ex instanceof NonUniqueResultException) && !(ex instanceof NoResultException) && !(ex instanceof LockTimeoutException) && !(ex instanceof QueryTimeoutException) && !throwing) { try { throwing = true; if (em.isOpen() && ((EntityManagerImpl) em).isActive()) ((EntityManagerImpl) em).setRollbackOnly(ex); } finally { // handle re-entrancy throwing = false; } } return ex; } };
@Override public void releaseSavepoint(Object savepoint) throws TransactionException { try { this.entityManager.releaseSavepoint((String) savepoint); } catch (Throwable ex) { LogFactory.getLog(OpenJpaTransactionData.class).debug( "Could not explicitly release OpenJPA savepoint", ex); } } }
@Override public void rollbackToSavepoint(final Object savepoint) throws TransactionException { this.entityManager.rollbackToSavepoint((String) savepoint); }
@Override public Connection getConnection() { return (Connection) this.entityManager.getConnection(); }
/** * Return the underlying broker for the given entity manager facade. */ public static Broker toBroker(EntityManager em) { if (em == null) return null; if (!(em instanceof EntityManagerImpl)) { Class c = em.getClass(); try { // either cast here may fail em = (EntityManagerImpl) ((OpenJPAEntityManager) em). getUserObject(EM_KEY); } catch (ClassCastException cce) { throw new ArgumentException(_loc.get("cant-convert-broker", c), new Throwable[] { cce }, null, false); } } return ((EntityManagerImpl) em).getBroker(); }