Package org.springframework.webflow.persistence

Source Code of org.springframework.webflow.persistence.HibernatePersistenceContextPropagationTests

package org.springframework.webflow.persistence;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.webflow.execution.FlowExecutionListener;

public class HibernatePersistenceContextPropagationTests extends AbstractPersistenceContextPropagationTests {

  private SessionFactory sessionFactory;

  private HibernateTemplate hibernateTemplate;

  private HibernateFlowExecutionListener executionListener;

  private int rowCount;

  @Override
  protected void setUpResources(DataSource dataSource) throws Exception {
    sessionFactory = getSessionFactory(dataSource);
    hibernateTemplate = new HibernateTemplate(sessionFactory);
    hibernateTemplate.setCheckWriteOperations(false);
    HibernateTransactionManager tm = new HibernateTransactionManager(sessionFactory);
    executionListener = new HibernateFlowExecutionListener(sessionFactory, tm);
    rowCount = 1;
  }

  @Override
  protected FlowExecutionListener getListener() {
    return executionListener;
  }

  @Override
  protected void assertSessionNotBound() {
    assertNull(TransactionSynchronizationManager.getResource(sessionFactory));
  }

  @Override
  protected void assertSessionBound() {
    assertNotNull(TransactionSynchronizationManager.getResource(sessionFactory));
  }

  @Override
  protected void assertCommitState(boolean insertRow, boolean isCommited) {
    if (insertRow) {
      hibernateTemplate.save(new TestBean(rowCount++, "Keith Donald"));
    }
    if (!isCommited) {
      assertEquals("Nothing should be committed yet", 1,
          getJdbcTemplate().queryForInt("select count(*) from T_BEAN"));
    } else {
      assertEquals("All rows should be committed", rowCount,
          getJdbcTemplate().queryForInt("select count(*) from T_BEAN"));
    }
  }

  @SuppressWarnings("cast")
  private SessionFactory getSessionFactory(DataSource dataSource) throws Exception {
    LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
    factory.setDataSource(dataSource);
    factory.setMappingLocations(new Resource[] {
        new ClassPathResource("org/springframework/webflow/persistence/TestBean.hbm.xml"),
        new ClassPathResource("org/springframework/webflow/persistence/TestAddress.hbm.xml") });
    factory.afterPropertiesSet();
    return (SessionFactory) factory.getObject();
  }

}
TOP

Related Classes of org.springframework.webflow.persistence.HibernatePersistenceContextPropagationTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.