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

com.sap.cds.transaction.impl.LocalTransactionManagerFactory Maven / Gradle / Ivy

package com.sap.cds.transaction.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.function.Supplier;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.sap.cds.transaction.SystemException;
import com.sap.cds.transaction.spi.ContainerTransactionManager;
import com.sap.cds.transaction.spi.TransactionManagerFactory;

public class LocalTransactionManagerFactory implements TransactionManagerFactory {

	private static final Logger logger = LoggerFactory.getLogger(LocalTransactionManagerFactory.class);

	private final LocalTransactionManager mgr;
	private final Supplier ds;

	public LocalTransactionManagerFactory(DataSource ds) {
		this(() -> getConnection(ds));
	}

	public LocalTransactionManagerFactory(Supplier ds) {
		this.mgr = new LocalTransactionManager(logger, ds);
		this.ds = mgr.getConnectionSupplier();
	}

	@Override
	public ContainerTransactionManager getTransactionManger() {
		return mgr;
	}

	@Override
	public Supplier getConnectionSupplier() {
		return ds::get;
	}

	private static Connection getConnection(DataSource ds) {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			throw new SystemException("cannot obtain connection", e);
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy