Search in sources :

Example 1 with LocalTransaction

use of javax.resource.cci.LocalTransaction in project spring-framework by spring-projects.

the class CciLocalTransactionTests method testLocalTransactionCommit.

/**
	 * Test if a transaction ( begin / commit ) is executed on the
	 * LocalTransaction when CciLocalTransactionManager is specified as
	 * transaction manager.
	 */
@Test
public void testLocalTransactionCommit() throws ResourceException {
    final ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Interaction interaction = mock(Interaction.class);
    LocalTransaction localTransaction = mock(LocalTransaction.class);
    final Record record = mock(Record.class);
    final InteractionSpec interactionSpec = mock(InteractionSpec.class);
    given(connectionFactory.getConnection()).willReturn(connection);
    given(connection.getLocalTransaction()).willReturn(localTransaction);
    given(connection.createInteraction()).willReturn(interaction);
    given(interaction.execute(interactionSpec, record, record)).willReturn(true);
    given(connection.getLocalTransaction()).willReturn(localTransaction);
    CciLocalTransactionManager tm = new CciLocalTransactionManager();
    tm.setConnectionFactory(connectionFactory);
    TransactionTemplate tt = new TransactionTemplate(tm);
    tt.execute(new TransactionCallbackWithoutResult() {

        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            assertTrue("Has thread connection", TransactionSynchronizationManager.hasResource(connectionFactory));
            CciTemplate ct = new CciTemplate(connectionFactory);
            ct.execute(interactionSpec, record, record);
        }
    });
    verify(localTransaction).begin();
    verify(interaction).close();
    verify(localTransaction).commit();
    verify(connection).close();
}
Also used : ConnectionFactory(javax.resource.cci.ConnectionFactory) LocalTransaction(javax.resource.cci.LocalTransaction) Interaction(javax.resource.cci.Interaction) InteractionSpec(javax.resource.cci.InteractionSpec) Connection(javax.resource.cci.Connection) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) TransactionStatus(org.springframework.transaction.TransactionStatus) Record(javax.resource.cci.Record) CciLocalTransactionManager(org.springframework.jca.cci.connection.CciLocalTransactionManager) CciTemplate(org.springframework.jca.cci.core.CciTemplate) TransactionCallbackWithoutResult(org.springframework.transaction.support.TransactionCallbackWithoutResult) Test(org.junit.Test)

Example 2 with LocalTransaction

use of javax.resource.cci.LocalTransaction in project spring-framework by spring-projects.

the class CciLocalTransactionTests method testLocalTransactionRollback.

/**
	 * Test if a transaction ( begin / rollback ) is executed on the
	 * LocalTransaction when CciLocalTransactionManager is specified as
	 * transaction manager and a non-checked exception is thrown.
	 */
@Test
public void testLocalTransactionRollback() throws ResourceException {
    final ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Interaction interaction = mock(Interaction.class);
    LocalTransaction localTransaction = mock(LocalTransaction.class);
    final Record record = mock(Record.class);
    final InteractionSpec interactionSpec = mock(InteractionSpec.class);
    given(connectionFactory.getConnection()).willReturn(connection);
    given(connection.getLocalTransaction()).willReturn(localTransaction);
    given(connection.createInteraction()).willReturn(interaction);
    given(interaction.execute(interactionSpec, record, record)).willReturn(true);
    given(connection.getLocalTransaction()).willReturn(localTransaction);
    CciLocalTransactionManager tm = new CciLocalTransactionManager();
    tm.setConnectionFactory(connectionFactory);
    TransactionTemplate tt = new TransactionTemplate(tm);
    try {
        tt.execute(new TransactionCallback<Void>() {

            @Override
            public Void doInTransaction(TransactionStatus status) {
                assertTrue("Has thread connection", TransactionSynchronizationManager.hasResource(connectionFactory));
                CciTemplate ct = new CciTemplate(connectionFactory);
                ct.execute(interactionSpec, record, record);
                throw new DataRetrievalFailureException("error");
            }
        });
    } catch (Exception ex) {
    }
    verify(localTransaction).begin();
    verify(interaction).close();
    verify(localTransaction).rollback();
    verify(connection).close();
}
Also used : LocalTransaction(javax.resource.cci.LocalTransaction) Interaction(javax.resource.cci.Interaction) InteractionSpec(javax.resource.cci.InteractionSpec) Connection(javax.resource.cci.Connection) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) TransactionStatus(org.springframework.transaction.TransactionStatus) CciLocalTransactionManager(org.springframework.jca.cci.connection.CciLocalTransactionManager) CciTemplate(org.springframework.jca.cci.core.CciTemplate) ResourceException(javax.resource.ResourceException) DataRetrievalFailureException(org.springframework.dao.DataRetrievalFailureException) ConnectionFactory(javax.resource.cci.ConnectionFactory) Record(javax.resource.cci.Record) DataRetrievalFailureException(org.springframework.dao.DataRetrievalFailureException) Test(org.junit.Test)

Aggregations

Connection (javax.resource.cci.Connection)2 ConnectionFactory (javax.resource.cci.ConnectionFactory)2 Interaction (javax.resource.cci.Interaction)2 InteractionSpec (javax.resource.cci.InteractionSpec)2 LocalTransaction (javax.resource.cci.LocalTransaction)2 Record (javax.resource.cci.Record)2 Test (org.junit.Test)2 CciLocalTransactionManager (org.springframework.jca.cci.connection.CciLocalTransactionManager)2 CciTemplate (org.springframework.jca.cci.core.CciTemplate)2 TransactionStatus (org.springframework.transaction.TransactionStatus)2 TransactionTemplate (org.springframework.transaction.support.TransactionTemplate)2 ResourceException (javax.resource.ResourceException)1 DataRetrievalFailureException (org.springframework.dao.DataRetrievalFailureException)1 TransactionCallbackWithoutResult (org.springframework.transaction.support.TransactionCallbackWithoutResult)1