public final void visitBefore(Element element, ExecutionContext executionContext) throws SmooksException { bind(executionContext); }
public final void executeExecutionLifecycleCleanup(ExecutionContext executionContext) { // This guarantees Datasource resource cleanup (at the end of an ExecutionContext lifecycle) in // situations where the Smooks filter operation has terminated prematurely i.e. where the // executeVisitLifecycleCleanup event method was not called... unbind(executionContext); }
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 SQLExecutor setDatasource(AbstractDataSource datasource) { AssertArgument.isNotNull(datasource, "datasource"); this.datasource = datasource.getName(); return this; }
public TransactionManager createTransactionManager(Connection connection) { return new JdbcTransactionManager(connection, isAutoCommit()); }
private void executeSQL(ExecutionContext executionContext, Fragment source) throws SmooksException { Connection connection = AbstractDataSource.getConnection(datasource, executionContext); BeanContext beanContext = executionContext.getBeanContext();
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 SQLExecutor setDatasource(AbstractDataSource datasource) { AssertArgument.isNotNull(datasource, "datasource"); this.datasource = datasource.getName(); return this; }
public TransactionManager createTransactionManager(Connection connection) { return new JdbcTransactionManager(connection, isAutoCommit()); }
private void executeSQL(ExecutionContext executionContext, Fragment source) throws SmooksException { Connection connection = AbstractDataSource.getConnection(datasource, executionContext); BeanContext beanContext = executionContext.getBeanContext();
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 Set<String> getProducts() { return CollectionsUtil.toSet(getName()); }
public final void executeExecutionLifecycleCleanup(ExecutionContext executionContext) { // This guarantees Datasource resource cleanup (at the end of an ExecutionContext lifecycle) in // situations where the Smooks filter operation has terminated prematurely i.e. where the // executeVisitLifecycleCleanup event method was not called... unbind(executionContext); }
public final void visitBefore(SAXElement element, ExecutionContext executionContext) throws SmooksException, IOException { bind(executionContext); }
public TransactionManager createTransactionManager(Connection connection) { return new JdbcTransactionManager(connection, isAutoCommit()); }
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()); } }