org.springframework.jca.cci.object
Class MappingRecordOperation

java.lang.Object
  extended by org.springframework.jca.cci.object.EisOperation
      extended by org.springframework.jca.cci.object.MappingRecordOperation
All Implemented Interfaces:
InitializingBean
Direct Known Subclasses:
MappingCommAreaOperation

public abstract class MappingRecordOperation
extends EisOperation

EIS operation object that expects mapped input and output objects, converting to and from CCI Records.

Concrete subclasses must implement the abstract createInputRecord(RecordFactory, Object) and extractOutputData(Record) methods, to create an input Record from an object and to convert an output Record into an object, respectively.

Since:
1.2
Author:
Thierry Templier, Juergen Hoeller
See Also:
createInputRecord(javax.resource.cci.RecordFactory, Object), extractOutputData(javax.resource.cci.Record)

Nested Class Summary
protected  class MappingRecordOperation.RecordCreatorImpl
          Implementation of RecordCreator that calls the enclosing class's createInputRecord method.
protected  class MappingRecordOperation.RecordExtractorImpl
          Implementation of RecordExtractor that calls the enclosing class's extractOutputData method.
 
Constructor Summary
MappingRecordOperation()
          Constructor that allows use as a JavaBean.
MappingRecordOperation(ConnectionFactory connectionFactory, InteractionSpec interactionSpec)
          Convenient constructor with ConnectionFactory and specifications (connection and interaction).
 
Method Summary
protected abstract  Record createInputRecord(RecordFactory recordFactory, Object inputObject)
          Subclasses must implement this method to generate an input Record from an input object passed into the execute method.
 Object execute(Object inputObject)
          Execute the interaction encapsulated by this operation object.
protected abstract  Object extractOutputData(Record outputRecord)
          Subclasses must implement this method to convert the Record returned by CCI execution into a result object for the execute method.
 void setOutputRecordCreator(RecordCreator creator)
          Set a RecordCreator that should be used for creating default output Records.
 
Methods inherited from class org.springframework.jca.cci.object.EisOperation
afterPropertiesSet, getCciTemplate, getInteractionSpec, setCciTemplate, setConnectionFactory, setInteractionSpec
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MappingRecordOperation

public MappingRecordOperation()
Constructor that allows use as a JavaBean.


MappingRecordOperation

public MappingRecordOperation(ConnectionFactory connectionFactory,
                              InteractionSpec interactionSpec)
Convenient constructor with ConnectionFactory and specifications (connection and interaction).

Parameters:
connectionFactory - ConnectionFactory to use to obtain connections
Method Detail

setOutputRecordCreator

public void setOutputRecordCreator(RecordCreator creator)
Set a RecordCreator that should be used for creating default output Records.

Default is none: CCI's Interaction.execute variant that returns an output Record will be called.

Specify a RecordCreator here if you always need to call CCI's Interaction.execute variant with a passed-in output Record. This RecordCreator will then be invoked to create a default output Record instance.

See Also:
Interaction.execute(javax.resource.cci.InteractionSpec, Record), Interaction.execute(javax.resource.cci.InteractionSpec, Record, Record), CciTemplate.setOutputRecordCreator(org.springframework.jca.cci.core.RecordCreator)

execute

public Object execute(Object inputObject)
               throws DataAccessException
Execute the interaction encapsulated by this operation object.

Parameters:
inputObject - the input data, to be converted to a Record by the createInputRecord method
Returns:
the output data extracted with the extractOutputData method
Throws:
DataAccessException - if there is any problem
See Also:
createInputRecord(javax.resource.cci.RecordFactory, java.lang.Object), extractOutputData(javax.resource.cci.Record)

createInputRecord

protected abstract Record createInputRecord(RecordFactory recordFactory,
                                            Object inputObject)
                                     throws ResourceException,
                                            DataAccessException
Subclasses must implement this method to generate an input Record from an input object passed into the execute method.

Parameters:
inputObject - the passed-in input object
Returns:
the CCI input Record
Throws:
ResourceException - if thrown by a CCI method, to be auto-converted to a DataAccessException
DataAccessException
See Also:
execute(Object)

extractOutputData

protected abstract Object extractOutputData(Record outputRecord)
                                     throws ResourceException,
                                            SQLException,
                                            DataAccessException
Subclasses must implement this method to convert the Record returned by CCI execution into a result object for the execute method.

Parameters:
outputRecord - the Record returned by CCI execution
Returns:
the result object
Throws:
ResourceException - if thrown by a CCI method, to be auto-converted to a DataAccessException
SQLException
DataAccessException
See Also:
execute(Object)