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.spi.InternalProcessor, org.apache.camel.StatefulService, org.apache.camel.SuspendableService
    Direct Known Subclasses:
    DefaultChannel

    public class CamelInternalProcessor
    extends org.apache.camel.support.processor.DelegateAsyncProcessor
    implements org.apache.camel.spi.InternalProcessor
    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.

    • 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

      • onClassloaded

        public static void onClassloaded​(org.slf4j.Logger log)
      • doBuild

        protected void doBuild()
                        throws Exception
        Overrides:
        doBuild in class org.apache.camel.support.processor.DelegateAsyncProcessor
        Throws:
        Exception
      • doShutdown

        protected void doShutdown()
                           throws Exception
        Overrides:
        doShutdown in class org.apache.camel.support.processor.DelegateAsyncProcessor
        Throws:
        Exception
      • addAdvice

        public void addAdvice​(org.apache.camel.spi.CamelInternalProcessorAdvice<?> advice)
        Specified by:
        addAdvice in interface org.apache.camel.spi.InternalProcessor
      • getAdvice

        public <T> T getAdvice​(Class<T> type)
        Specified by:
        getAdvice in interface org.apache.camel.spi.InternalProcessor
      • addRoutePolicyAdvice

        public void addRoutePolicyAdvice​(List<org.apache.camel.spi.RoutePolicy> routePolicyList)
        Specified by:
        addRoutePolicyAdvice in interface org.apache.camel.spi.InternalProcessor
      • addRouteInflightRepositoryAdvice

        public void addRouteInflightRepositoryAdvice​(org.apache.camel.spi.InflightRepository inflightRepository,
                                                     String routeId)
        Specified by:
        addRouteInflightRepositoryAdvice in interface org.apache.camel.spi.InternalProcessor
      • addRouteLifecycleAdvice

        public void addRouteLifecycleAdvice()
        Specified by:
        addRouteLifecycleAdvice in interface org.apache.camel.spi.InternalProcessor
      • addManagementInterceptStrategy

        public void addManagementInterceptStrategy​(org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor processor)
        Specified by:
        addManagementInterceptStrategy in interface org.apache.camel.spi.InternalProcessor
      • setRouteOnAdvices

        public void setRouteOnAdvices​(org.apache.camel.Route route)
        Specified by:
        setRouteOnAdvices in interface org.apache.camel.spi.InternalProcessor
      • 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)