@@ -0,0 +1,902 @@
+package com.appspot.relaxe.rdbms;%0A%0Aimport java.sql.Connection;%0Aimport java.sql.SQLException;%0A%0Aimport javax.sql.DataSource;%0A%0Aimport org.slf4j.Logger;%0Aimport org.slf4j.LoggerFactory;%0A%0Aimport com.appspot.relaxe.rdbms.ConnectionManager;%0A%0Apublic final class DataSourceConnectionManager implements ConnectionManager %7B%0A%09%09 %0A%09private static Logger logger = LoggerFactory.getLogger(DataSourceConnectionManager.class);%09%0A%09%0A%09private final DataSource dataSource;%0A%0A%09public DataSourceConnectionManager(DataSource ds) %7B%0A%09%09this.dataSource = ds;%0A%09%7D%0A%0A%09@Override%0A%09public void release(Connection c) %7B%0A%09%09try %7B%0A%09%09%09c.close();%0A%09%09%7D %0A%09%09catch (SQLException e) %7B%09%09%09%09%09%0A%09%09%09onCloseError(e);%0A%09%09%7D%09%09%09%09%09%0A%09%7D%0A%0A%09public void onCloseError(SQLException e) %7B%0A%09%09logger.warn(e.getMessage(), e);%0A%09%7D%0A%0A%09@Override%0A%09public Connection reserve() throws SQLException %7B%0A%09%09Connection c = dataSource.getConnection();%0A%09%09c.setAutoCommit(false);%0A%09%09return c;%0A%09%7D%0A%7D

Add DataSourceConnectionManager