## org.springframework.jca.cci.object
Class MappingRecordOperation

    java.lang.Object
      org.springframework.jca.cci.object.EisOperation
          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)`