public static Connection getConnection(String dataSourceName, ExecutionContext executionContext) throws SmooksException { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName); if(connection == null) { AbstractDataSource datasource = (AbstractDataSource) executionContext.getAttribute(DS_CONTEXT_KEY_PREFIX + dataSourceName); if(datasource == null) { throw new SmooksException("DataSource '" + dataSourceName + "' not bound to context. Configure an '" + AbstractDataSource.class.getName() + "' implementation and target it at '#document'."); } try { connection = datasource.getConnection(); TransactionManager transactionManager = datasource.createTransactionManager(connection); transactionManager.begin(); executionContext.setAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName, connection); executionContext.setAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + dataSourceName, transactionManager); } catch (SQLException e) { throw new SmooksException("Unable to open connection to dataSource '" + dataSourceName + "'.", e); } } return connection; }
protected void unbind(ExecutionContext executionContext) { try { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); if(connection != null) { TransactionManager transactionManager = (TransactionManager) executionContext.getAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); if(transactionManager == null) { throw new SmooksException("No TransactionManager is set for the datasource '" + getName() + "'"); } try { if(!isAutoCommit()) { // If there's no termination error on the context, commit, otherwise rollback... if(executionContext.getTerminationError() == null) { transactionManager.commit(); } else { transactionManager.rollback(); } } } finally { executionContext.removeAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); connection.close(); } } } catch (SQLException e) { throw new SmooksException("Unable to unbind DataSource '" + getName() + "'.", e); } finally { executionContext.removeAttribute(DS_CONTEXT_KEY_PREFIX + getName()); executionContext.removeAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); } }
protected void unbind(ExecutionContext executionContext) { try { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); if(connection != null) { TransactionManager transactionManager = (TransactionManager) executionContext.getAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); if(transactionManager == null) { throw new SmooksException("No TransactionManager is set for the datasource '" + getName() + "'"); } try { if(!isAutoCommit()) { // If there's no termination error on the context, commit, otherwise rollback... if(executionContext.getTerminationError() == null) { transactionManager.commit(); } else { transactionManager.rollback(); } } } finally { executionContext.removeAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); connection.close(); } } } catch (SQLException e) { throw new SmooksException("Unable to unbind DataSource '" + getName() + "'.", e); } finally { executionContext.removeAttribute(DS_CONTEXT_KEY_PREFIX + getName()); executionContext.removeAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); } }
protected void unbind(ExecutionContext executionContext) { try { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); if(connection != null) { TransactionManager transactionManager = (TransactionManager) executionContext.getAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); if(transactionManager == null) { throw new SmooksException("No TransactionManager is set for the datasource '" + getName() + "'"); } try { if(!isAutoCommit()) { // If there's no termination error on the context, commit, otherwise rollback... if(executionContext.getTerminationError() == null) { transactionManager.commit(); } else { transactionManager.rollback(); } } } finally { executionContext.removeAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); connection.close(); } } } catch (SQLException e) { throw new SmooksException("Unable to unbind DataSource '" + getName() + "'.", e); } finally { executionContext.removeAttribute(DS_CONTEXT_KEY_PREFIX + getName()); executionContext.removeAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); } }
public static Connection getConnection(String dataSourceName, ExecutionContext executionContext) throws SmooksException { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName); if(connection == null) { AbstractDataSource datasource = (AbstractDataSource) executionContext.getAttribute(DS_CONTEXT_KEY_PREFIX + dataSourceName); if(datasource == null) { throw new SmooksException("DataSource '" + dataSourceName + "' not bound to context. Configure an '" + AbstractDataSource.class.getName() + "' implementation and target it at '#document'."); } try { connection = datasource.getConnection(); TransactionManager transactionManager = datasource.createTransactionManager(connection); transactionManager.begin(); executionContext.setAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName, connection); executionContext.setAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + dataSourceName, transactionManager); } catch (SQLException e) { throw new SmooksException("Unable to open connection to dataSource '" + dataSourceName + "'.", e); } } return connection; }
protected void unbind(ExecutionContext executionContext) { try { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); if(connection != null) { TransactionManager transactionManager = (TransactionManager) executionContext.getAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); if(transactionManager == null) { throw new SmooksException("No TransactionManager is set for the datasource '" + getName() + "'"); } try { if(!isAutoCommit()) { // If there's no termination error on the context, commit, otherwise rollback... if(executionContext.getTerminationError() == null) { transactionManager.commit(); } else { transactionManager.rollback(); } } } finally { executionContext.removeAttribute(CONNECTION_CONTEXT_KEY_PREFIX + getName()); connection.close(); } } } catch (SQLException e) { throw new SmooksException("Unable to unbind DataSource '" + getName() + "'.", e); } finally { executionContext.removeAttribute(DS_CONTEXT_KEY_PREFIX + getName()); executionContext.removeAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + getName()); } }
public static Connection getConnection(String dataSourceName, ExecutionContext executionContext) throws SmooksException { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName); if(connection == null) { AbstractDataSource datasource = (AbstractDataSource) executionContext.getAttribute(DS_CONTEXT_KEY_PREFIX + dataSourceName); if(datasource == null) { throw new SmooksException("DataSource '" + dataSourceName + "' not bound to context. Configure an '" + AbstractDataSource.class.getName() + "' implementation and target it at '#document'."); } try { connection = datasource.getConnection(); TransactionManager transactionManager = datasource.createTransactionManager(connection); transactionManager.begin(); executionContext.setAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName, connection); executionContext.setAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + dataSourceName, transactionManager); } catch (SQLException e) { throw new SmooksException("Unable to open connection to dataSource '" + dataSourceName + "'.", e); } } return connection; }
public static Connection getConnection(String dataSourceName, ExecutionContext executionContext) throws SmooksException { Connection connection = (Connection) executionContext.getAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName); if(connection == null) { AbstractDataSource datasource = (AbstractDataSource) executionContext.getAttribute(DS_CONTEXT_KEY_PREFIX + dataSourceName); if(datasource == null) { throw new SmooksException("DataSource '" + dataSourceName + "' not bound to context. Configure an '" + AbstractDataSource.class.getName() + "' implementation and target it at '#document'."); } try { connection = datasource.getConnection(); TransactionManager transactionManager = datasource.createTransactionManager(connection); transactionManager.begin(); executionContext.setAttribute(CONNECTION_CONTEXT_KEY_PREFIX + dataSourceName, connection); executionContext.setAttribute(TRANSACTION_MANAGER_CONTEXT_KEY_PREFIX + dataSourceName, transactionManager); } catch (SQLException e) { throw new SmooksException("Unable to open connection to dataSource '" + dataSourceName + "'.", e); } } return connection; }