Package org.apache.uima.collection.base_cpm

# Interface CasProcessor

All Known Subinterfaces:
  `AnalysisEngine`, `CasConsumer`, `CasDataConsumer`, `CasDataProcessor`, `CasObjectProcessor`, `TextAnalysisEngine`

All Known Implementing Classes:
  `AggregateAnalysisEngine_impl`, `AnalysisEngineImplBase`, `AnalysisEngineProcessorAdapter`, `AnalysisEngineServiceAdapter`, `CasConsumer_ImplBase`, `CasDataConsumer_ImplBase`, `CasProcessorAnnotator`, `JCasProcessorAnnotator`, `MultiprocessingAnalysisEngine_impl`, `PearAnalysisEngineWrapper`, `PrimitiveAnalysisEngine_impl`, `UimacppAnalysisEngineImpl`

public interface CasProcessor
Base interface for a component that can process a CAS. This includes both components that modify the CAS (such as an `AnalysisEngine` as well as those that do not (such as a `CasConsumer`). Whether the CasProcessor modifies the CAS can be determined by calling its `isReadOnly()` method.

`CasProcessor`s can be "plugged into" the `CollectionProcessingManager`.

CAS Processors should not directly implement this interface; instead they should implement one of its subinterfaces:

- `CasDataProcessor` - for CAS processors that want to interact directly with the `CasData`. This works best for simple processors that do not need the indexing or strong typing features provided by the CAS container.
- `CasObjectProcessor` - for CAS processors that want to use the full `CAS` implementation.

Analysis Engines and CAS Consumers implement `CasObjectProcessor`.

All CAS processors must publish their metadata via the `getProcessingResourceMetaData()` method.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `batchProcessComplete(ProcessTrace aTrace)`
  Completes the processing of a batch.
  `void`
  `collectionProcessComplete(ProcessTrace aTrace)`
  Completes the processing of an entire collection.
  `ProcessingResourceMetaData`
  `getProcessingResourceMetaData()`
  Gets the metadata that describes this `CasProcesor`.
  `boolean`
  `isReadOnly()`
  Gets whether this is a read-only CAS Processor, which does not modify the CAS.
  `boolean`
  `isStateless()`
  Gets whether this is a stateless CAS Processor.

- ## Method Details

  - ### isStateless

    boolean isStateless()
    Gets whether this is a stateless CAS Processor. Stateless CAS Processors do not maintain any data between calls to their process methods.
    Returns:
      true if this CAS processor is stateless, false if it is stateful.

  - ### isReadOnly

    boolean isReadOnly()
    Gets whether this is a read-only CAS Processor, which does not modify the CAS.
    Returns:
      true if this CAS processor does not modify the CAS, false if it does.

  - ### getProcessingResourceMetaData

    ProcessingResourceMetaData getProcessingResourceMetaData()
    Gets the metadata that describes this `CasProcesor`.
    Returns:
      an object containing all metadata for this CasProcessor

  - ### batchProcessComplete

    void batchProcessComplete(ProcessTrace aTrace) throws ResourceProcessException, IOException
    Completes the processing of a batch. A collection may be divided into one or more batches - it is up to the CollectionProcessingManager or the application to determine the number and size of batches.
    Parameters:
      `aTrace` - an object that records information, such as timing, about this method's execution.
    Throws:
      `ResourceProcessException` - if an exception occurs during processing
      `IOException` - if an I/O failure occurs

  - ### collectionProcessComplete

    void collectionProcessComplete(ProcessTrace aTrace) throws ResourceProcessException, IOException
    Completes the processing of an entire collection.
    Parameters:
      `aTrace` - an object that records information, such as timing, about this method's execution.
    Throws:
      `ResourceProcessException` - if an exception occurs during processing
      `IOException` - if an I/O failure occurs