Class CamelInternalProcessor

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.AsyncProcessor, org.apache.camel.DelegateProcessor, org.apache.camel.Navigate<org.apache.camel.Processor>, org.apache.camel.Processor, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.StatefulService, org.apache.camel.SuspendableService
    Direct Known Subclasses:
    DefaultChannel

    public class CamelInternalProcessor
    extends org.apache.camel.support.processor.DelegateAsyncProcessor
    Internal Processor that Camel routing engine used during routing for cross cutting functionality such as:
    • Execute UnitOfWork
    • Keeping track which route currently is being routed
    • Execute RoutePolicy
    • Gather JMX performance statics
    • Tracing
    • Debugging
    • Message History
    • Stream Caching
    • Transformer
    ... and more.

    This implementation executes this cross cutting functionality as a CamelInternalProcessorAdvice advice (before and after advice) by executing the CamelInternalProcessorAdvice.before(org.apache.camel.Exchange) and CamelInternalProcessorAdvice.after(org.apache.camel.Exchange, Object) callbacks in correct order during routing. This reduces number of stack frames needed during routing, and reduce the number of lines in stacktraces, as well makes debugging the routing engine easier for end users.

    Debugging tips: Camel end users whom want to debug their Camel applications with the Camel source code, then make sure to read the source code of this class about the debugging tips, which you can find in the process(org.apache.camel.Exchange, org.apache.camel.AsyncCallback) method.

    The added advices can implement Ordered to control in which order the advices are executed.

    • Field Summary

      • Fields inherited from class org.apache.camel.support.processor.DelegateAsyncProcessor

        processor
      • Fields inherited from class org.apache.camel.support.service.BaseService

        BUILDED, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTINGDOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
    • Constructor Summary

      Constructors 
      Constructor Description
      CamelInternalProcessor​(org.apache.camel.CamelContext camelContext)  
      CamelInternalProcessor​(org.apache.camel.CamelContext camelContext, org.apache.camel.Processor processor)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addAdvice​(org.apache.camel.spi.CamelInternalProcessorAdvice<?> advice)
      Adds an CamelInternalProcessorAdvice advice to the list of advices to execute by this internal processor.
      <T> T getAdvice​(Class<T> type)
      Gets the advice with the given type.
      boolean process​(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback originalCallback)  
      String toString()  
      static Object unwrap​(org.apache.camel.spi.CamelInternalProcessorAdvice<?> advice)  
      static <T> org.apache.camel.spi.CamelInternalProcessorAdvice<T> wrap​(org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor<T> instrumentationProcessor)
      Wrap an InstrumentationProcessor into a CamelInternalProcessorAdvice
      • Methods inherited from class org.apache.camel.support.processor.DelegateAsyncProcessor

        doShutdown, doStart, doStop, getProcessor, hasNext, next, setProcessor, setProcessor
      • Methods inherited from class org.apache.camel.support.AsyncProcessorSupport

        process, processAsync
      • Methods inherited from class org.apache.camel.support.service.BaseService

        build, doBuild, doFail, doInit, doLifecycleChange, doResume, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
      • Methods inherited from interface org.apache.camel.Processor

        process
      • Methods inherited from interface org.apache.camel.Service

        build, close, init, start, stop
      • Methods inherited from interface org.apache.camel.ShutdownableService

        shutdown
      • Methods inherited from interface org.apache.camel.StatefulService

        getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending
      • Methods inherited from interface org.apache.camel.SuspendableService

        isSuspended, resume, suspend
    • Constructor Detail

      • CamelInternalProcessor

        public CamelInternalProcessor​(org.apache.camel.CamelContext camelContext)
      • CamelInternalProcessor

        public CamelInternalProcessor​(org.apache.camel.CamelContext camelContext,
                                      org.apache.camel.Processor processor)
    • Method Detail

      • addAdvice

        public void addAdvice​(org.apache.camel.spi.CamelInternalProcessorAdvice<?> advice)
        Adds an CamelInternalProcessorAdvice advice to the list of advices to execute by this internal processor.
        Parameters:
        advice - the advice to add
      • getAdvice

        public <T> T getAdvice​(Class<T> type)
        Gets the advice with the given type.
        Parameters:
        type - the type of the advice
        Returns:
        the advice if exists, or null if no advices has been added with the given type.
      • process

        public boolean process​(org.apache.camel.Exchange exchange,
                               org.apache.camel.AsyncCallback originalCallback)
        Specified by:
        process in interface org.apache.camel.AsyncProcessor
        Overrides:
        process in class org.apache.camel.support.processor.DelegateAsyncProcessor
      • toString

        public String toString()
        Overrides:
        toString in class org.apache.camel.support.processor.DelegateAsyncProcessor
      • wrap

        public static <T> org.apache.camel.spi.CamelInternalProcessorAdvice<T> wrap​(org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor<T> instrumentationProcessor)
        Wrap an InstrumentationProcessor into a CamelInternalProcessorAdvice
      • unwrap

        public static Object unwrap​(org.apache.camel.spi.CamelInternalProcessorAdvice<?> advice)