org.apache.camel.processor
Class Enricher

java.lang.Object
  extended by org.apache.camel.impl.ServiceSupport
      extended by org.apache.camel.processor.Enricher
All Implemented Interfaces:
AsyncProcessor, Processor, Service, ShutdownableService

public class Enricher
extends ServiceSupport
implements AsyncProcessor

A content enricher that enriches input data by first obtaining additional data from a resource represented by an endpoint producer and second by aggregating input data and additional data. Aggregation of input data and additional data is delegated to an AggregationStrategy object.

Uses a Producer to obtain the additional data as opposed to PollEnricher that uses a PollingConsumer.

See Also:
PollEnricher

Constructor Summary
Enricher(AggregationStrategy aggregationStrategy, Producer producer)
          Creates a new Enricher.
Enricher(Producer producer)
          Creates a new Enricher.
 
Method Summary
protected  Exchange createResourceExchange(Exchange source, ExchangePattern pattern)
          Creates a new DefaultExchange instance from the given exchange.
protected  void doStart()
           
protected  void doStop()
           
 void process(Exchange exchange)
          Processes the message exchange
 boolean process(Exchange exchange, AsyncCallback callback)
          Enriches the input data (exchange) by first obtaining additional data from an endpoint represented by an endpoint producer and second by aggregating input data and additional data.
 void setAggregationStrategy(AggregationStrategy aggregationStrategy)
          Sets the aggregation strategy for this enricher.
 void setDefaultAggregationStrategy()
          Sets the default aggregation strategy for this enricher.
 String toString()
           
 
Methods inherited from class org.apache.camel.impl.ServiceSupport
addChildService, doResume, doShutdown, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspended, isSuspending, removeChildService, resume, shutdown, start, start, stop, suspend
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Enricher

public Enricher(Producer producer)
Creates a new Enricher. The default aggregation strategy is to copy the additional data obtained from the enricher's resource over the input data. When using the copy aggregation strategy the enricher degenerates to a normal transformer.

Parameters:
producer - producer to resource endpoint.

Enricher

public Enricher(AggregationStrategy aggregationStrategy,
                Producer producer)
Creates a new Enricher.

Parameters:
aggregationStrategy - aggregation strategy to aggregate input data and additional data.
producer - producer to resource endpoint.
Method Detail

setAggregationStrategy

public void setAggregationStrategy(AggregationStrategy aggregationStrategy)
Sets the aggregation strategy for this enricher.

Parameters:
aggregationStrategy - the aggregationStrategy to set

setDefaultAggregationStrategy

public void setDefaultAggregationStrategy()
Sets the default aggregation strategy for this enricher.


process

public void process(Exchange exchange)
             throws Exception
Description copied from interface: Processor
Processes the message exchange

Specified by:
process in interface Processor
Parameters:
exchange - the message exchange
Throws:
Exception - if an internal processing error has occurred.

process

public boolean process(Exchange exchange,
                       AsyncCallback callback)
Enriches the input data (exchange) by first obtaining additional data from an endpoint represented by an endpoint producer and second by aggregating input data and additional data. Aggregation of input data and additional data is delegated to an AggregationStrategy object set at construction time. If the message exchange with the resource endpoint fails then no aggregation will be done and the failed exchange content is copied over to the original message exchange.

Specified by:
process in interface AsyncProcessor
Parameters:
exchange - input data.
callback - the AsyncCallback will be invoked when the processing of the exchange is completed. If the exchange is completed synchronously, then the callback is also invoked synchronously. The callback should therefore be careful of starting recursive loop.
Returns:
(doneSync) true to continue execute synchronously, false to continue being executed asynchronously
See Also:
AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback)

createResourceExchange

protected Exchange createResourceExchange(Exchange source,
                                          ExchangePattern pattern)
Creates a new DefaultExchange instance from the given exchange. The resulting exchange's pattern is defined by pattern.

Parameters:
source - exchange to copy from.
pattern - exchange pattern to set.
Returns:
created exchange.

toString

public String toString()
Overrides:
toString in class Object

doStart

protected void doStart()
                throws Exception
Specified by:
doStart in class ServiceSupport
Throws:
Exception

doStop

protected void doStop()
               throws Exception
Specified by:
doStop in class ServiceSupport
Throws:
Exception


Apache CAMEL