Search in sources :

Example 1 with Record

use of javax.resource.cci.Record 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 Record

use of javax.resource.cci.Record 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)

Example 3 with Record

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

the class CciTemplateTests method testTemplateExecuteInputFalse.

@Test
public void testTemplateExecuteInputFalse() throws ResourceException {
    ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Interaction interaction = mock(Interaction.class);
    Record inputRecord = mock(Record.class);
    Record outputRecord = mock(Record.class);
    InteractionSpec interactionSpec = mock(InteractionSpec.class);
    given(connectionFactory.getConnection()).willReturn(connection);
    given(connection.createInteraction()).willReturn(interaction);
    given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord);
    CciTemplate ct = new CciTemplate(connectionFactory);
    ct.execute(interactionSpec, inputRecord);
    verify(interaction).execute(interactionSpec, inputRecord);
    verify(interaction).close();
    verify(connection).close();
}
Also used : ConnectionFactory(javax.resource.cci.ConnectionFactory) Interaction(javax.resource.cci.Interaction) InteractionSpec(javax.resource.cci.InteractionSpec) Connection(javax.resource.cci.Connection) MappedRecord(javax.resource.cci.MappedRecord) IndexedRecord(javax.resource.cci.IndexedRecord) Record(javax.resource.cci.Record) CciTemplate(org.springframework.jca.cci.core.CciTemplate) Test(org.junit.Test)

Example 4 with Record

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

the class CciTemplateTests method testTemplateExecuteInputExtractorTrueWithCreator.

@SuppressWarnings("unchecked")
@Test
public void testTemplateExecuteInputExtractorTrueWithCreator() throws ResourceException, SQLException {
    ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    RecordFactory recordFactory = mock(RecordFactory.class);
    Connection connection = mock(Connection.class);
    Interaction interaction = mock(Interaction.class);
    RecordExtractor<Object> extractor = mock(RecordExtractor.class);
    RecordCreator creator = mock(RecordCreator.class);
    Record inputRecord = mock(Record.class);
    Record outputRecord = mock(Record.class);
    InteractionSpec interactionSpec = mock(InteractionSpec.class);
    given(connectionFactory.getConnection()).willReturn(connection);
    given(connection.createInteraction()).willReturn(interaction);
    given(connectionFactory.getRecordFactory()).willReturn(recordFactory);
    given(creator.createRecord(recordFactory)).willReturn(outputRecord);
    given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true);
    given(extractor.extractData(outputRecord)).willReturn(new Object());
    CciTemplate ct = new CciTemplate(connectionFactory);
    ct.setOutputRecordCreator(creator);
    ct.execute(interactionSpec, inputRecord, extractor);
    verify(extractor).extractData(outputRecord);
    verify(interaction).close();
    verify(connection).close();
}
Also used : ConnectionFactory(javax.resource.cci.ConnectionFactory) RecordFactory(javax.resource.cci.RecordFactory) NotSupportedRecordFactory(org.springframework.jca.cci.connection.NotSupportedRecordFactory) Interaction(javax.resource.cci.Interaction) RecordCreator(org.springframework.jca.cci.core.RecordCreator) InteractionSpec(javax.resource.cci.InteractionSpec) Connection(javax.resource.cci.Connection) MappedRecord(javax.resource.cci.MappedRecord) IndexedRecord(javax.resource.cci.IndexedRecord) Record(javax.resource.cci.Record) CciTemplate(org.springframework.jca.cci.core.CciTemplate) Test(org.junit.Test)

Example 5 with Record

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

the class CciTemplateTests method testTemplateExecuteWithCreatorAndRecordFactoryNotSupported.

@Test
public void testTemplateExecuteWithCreatorAndRecordFactoryNotSupported() throws ResourceException {
    ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Interaction interaction = mock(Interaction.class);
    Record inputRecord = mock(Record.class);
    final Record outputRecord = mock(Record.class);
    InteractionSpec interactionSpec = mock(InteractionSpec.class);
    given(connectionFactory.getConnection()).willReturn(connection);
    given(connectionFactory.getRecordFactory()).willThrow(new NotSupportedException("not supported"));
    given(connection.createInteraction()).willReturn(interaction);
    given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true);
    CciTemplate ct = new CciTemplate(connectionFactory);
    ct.setOutputRecordCreator(new RecordCreator() {

        @Override
        public Record createRecord(RecordFactory recordFactory) {
            assertTrue(recordFactory instanceof NotSupportedRecordFactory);
            return outputRecord;
        }
    });
    ct.execute(interactionSpec, inputRecord);
    verify(interaction).execute(interactionSpec, inputRecord, outputRecord);
    verify(interaction).close();
    verify(connection).close();
}
Also used : ConnectionFactory(javax.resource.cci.ConnectionFactory) RecordFactory(javax.resource.cci.RecordFactory) NotSupportedRecordFactory(org.springframework.jca.cci.connection.NotSupportedRecordFactory) Interaction(javax.resource.cci.Interaction) InteractionSpec(javax.resource.cci.InteractionSpec) RecordCreator(org.springframework.jca.cci.core.RecordCreator) Connection(javax.resource.cci.Connection) NotSupportedRecordFactory(org.springframework.jca.cci.connection.NotSupportedRecordFactory) MappedRecord(javax.resource.cci.MappedRecord) IndexedRecord(javax.resource.cci.IndexedRecord) Record(javax.resource.cci.Record) CciTemplate(org.springframework.jca.cci.core.CciTemplate) NotSupportedException(javax.resource.NotSupportedException) Test(org.junit.Test)

Aggregations

Connection (javax.resource.cci.Connection)22 ConnectionFactory (javax.resource.cci.ConnectionFactory)22 Interaction (javax.resource.cci.Interaction)22 InteractionSpec (javax.resource.cci.InteractionSpec)22 Record (javax.resource.cci.Record)22 Test (org.junit.Test)22 CciTemplate (org.springframework.jca.cci.core.CciTemplate)17 IndexedRecord (javax.resource.cci.IndexedRecord)15 MappedRecord (javax.resource.cci.MappedRecord)15 RecordFactory (javax.resource.cci.RecordFactory)10 RecordCreator (org.springframework.jca.cci.core.RecordCreator)10 NotSupportedRecordFactory (org.springframework.jca.cci.connection.NotSupportedRecordFactory)8 SimpleRecordOperation (org.springframework.jca.cci.object.SimpleRecordOperation)3 LocalTransaction (javax.resource.cci.LocalTransaction)2 CciLocalTransactionManager (org.springframework.jca.cci.connection.CciLocalTransactionManager)2 TransactionStatus (org.springframework.transaction.TransactionStatus)2 TransactionTemplate (org.springframework.transaction.support.TransactionTemplate)2 NotSupportedException (javax.resource.NotSupportedException)1 ResourceException (javax.resource.ResourceException)1 ConnectionSpec (javax.resource.cci.ConnectionSpec)1