
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