@Nullable abstract fun doInInteraction(interaction: Interaction, connectionFactory: ConnectionFactory): T
Gets called by CciTemplate.execute with an active CCI Interaction. Does not need to care about activating or closing the Interaction, or handling transactions.
If called without a thread-bound CCI transaction (initiated by CciLocalTransactionManager), the code will simply get executed on the CCI Interaction with its transactional semantics. If CciTemplate is configured to use a JTA-aware ConnectionFactory, the CCI Interaction and thus the callback code will be transactional if a JTA transaction is active.
Allows for returning a result object created within the callback, i.e. a domain object or a collection of domain objects. Note that there's special support for single step actions: see the CciTemplate.execute variants. A thrown RuntimeException is treated as application exception: it gets propagated to the caller of the template.
interaction - active CCI Interaction
connectionFactory - the CCI ConnectionFactory that the Connection was created with (gives access to RecordFactory and ResourceAdapterMetaData)
ResourceException - if thrown by a CCI method, to be auto-converted to a DataAccessException
SQLException - if thrown by a ResultSet method, to be auto-converted to a DataAccessException
DataAccessException - in case of custom exceptions
Return
a result object, or null if none
See Also
javax.resource.cci.ConnectionFactory#getRecordFactory()javax.resource.cci.ConnectionFactory#getMetaData()CciTemplate#execute(javax.resource.cci.InteractionSpec, RecordCreator, RecordExtractor)