All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.persistence.internal.jpa.transaction.TransactionManagerImpl Maven / Gradle / Ivy

There is a newer version: 5.0.0-B05
Show newest version
/*
 * Copyright (c) 1998, 2024 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.internal.jpa.transaction;

import java.sql.Connection;
import java.sql.SQLException;
import jakarta.transaction.*;
import org.eclipse.persistence.internal.jpa.jdbc.DataSourceImpl;

/**
 * Implementation of JTA Transaction manager class.
 * 

* Currently support is limited to enlisting a single tx data source */ @Deprecated public class TransactionManagerImpl implements TransactionManager, UserTransaction { // Not null when a transaction is active TransactionImpl tx; /* ********************** */ /* **** Internal API **** */ /* ********************** */ private void debug(String s) { System.out.println(s); } /* * Used to create the single instance */ public TransactionManagerImpl() { this.tx = null; } /* * Return true if a transaction has been explicitly begun */ public boolean isTransactionActive() { return tx != null; } /* * Return a Connection if a transaction is active, otherwise return null */ public Connection getConnection(DataSourceImpl ds, String user, String password) throws SQLException { return (tx == null) ? null : tx.getConnection(ds, user, password); } /* ********************************************************** */ /* **** Supported TransactionManager/UserTransaction API **** */ /* ********************************************************** */ @Override public void begin() throws NotSupportedException, SystemException { debug("Tx - begin"); if (isTransactionActive()) { throw new ExceptionFactory().txActiveException(); } // New transaction created by virtue of Transaction existence tx = new TransactionImpl(); } @Override public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException { debug("Tx - commit"); if (!isTransactionActive()) { throw new ExceptionFactory().txNotActiveException(); } try{ tx.commit(); }finally{ tx = null; } } @Override public int getStatus() throws SystemException { return (!isTransactionActive()) ? Status.STATUS_NO_TRANSACTION : tx.getStatus(); } @Override public Transaction getTransaction() throws SystemException { return tx; } @Override public void rollback() throws IllegalStateException, SecurityException, SystemException { debug("Tx - rollback"); if (!isTransactionActive()) { throw new ExceptionFactory().txNotActiveException(); } try{ tx.rollback(); }finally{ tx = null; } } @Override public void setRollbackOnly() throws IllegalStateException, SystemException { debug("Tx - rollback"); if (!isTransactionActive()) { throw new ExceptionFactory().txNotActiveException(); } tx.setRollbackOnly(); } /* ************************************************************** */ /* **** NOT supported TransactionManager/UserTransaction API **** */ /* ************************************************************** */ @Override public Transaction suspend() throws SystemException { return null; } @Override public void resume(Transaction transaction) throws InvalidTransactionException, IllegalStateException, SystemException { // Do nothing } @Override public void setTransactionTimeout(int i) throws SystemException { // Do nothing } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy