001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.impl.lw;
018
019import java.io.IOException;
020import java.util.Collection;
021import java.util.Date;
022import java.util.List;
023import java.util.Map;
024import java.util.Set;
025import java.util.concurrent.ExecutorService;
026import java.util.concurrent.ScheduledExecutorService;
027import java.util.function.Function;
028
029import org.apache.camel.AsyncProcessor;
030import org.apache.camel.CamelContext;
031import org.apache.camel.CatalogCamelContext;
032import org.apache.camel.Component;
033import org.apache.camel.ConsumerTemplate;
034import org.apache.camel.Endpoint;
035import org.apache.camel.ErrorHandlerFactory;
036import org.apache.camel.Experimental;
037import org.apache.camel.Expression;
038import org.apache.camel.ExtendedCamelContext;
039import org.apache.camel.FluentProducerTemplate;
040import org.apache.camel.GlobalEndpointConfiguration;
041import org.apache.camel.Navigate;
042import org.apache.camel.NoSuchLanguageException;
043import org.apache.camel.Predicate;
044import org.apache.camel.Processor;
045import org.apache.camel.ProducerTemplate;
046import org.apache.camel.Route;
047import org.apache.camel.RoutesBuilder;
048import org.apache.camel.ServiceStatus;
049import org.apache.camel.ShutdownRoute;
050import org.apache.camel.ShutdownRunningTask;
051import org.apache.camel.StartupListener;
052import org.apache.camel.TypeConverter;
053import org.apache.camel.ValueHolder;
054import org.apache.camel.builder.AdviceWithRouteBuilder;
055import org.apache.camel.catalog.RuntimeCamelCatalog;
056import org.apache.camel.impl.DefaultCamelContext;
057import org.apache.camel.impl.engine.DefaultRoute;
058import org.apache.camel.model.DataFormatDefinition;
059import org.apache.camel.model.FaultToleranceConfigurationDefinition;
060import org.apache.camel.model.HystrixConfigurationDefinition;
061import org.apache.camel.model.ModelCamelContext;
062import org.apache.camel.model.ProcessorDefinition;
063import org.apache.camel.model.Resilience4jConfigurationDefinition;
064import org.apache.camel.model.RouteDefinition;
065import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
066import org.apache.camel.model.language.ExpressionDefinition;
067import org.apache.camel.model.rest.RestDefinition;
068import org.apache.camel.model.transformer.TransformerDefinition;
069import org.apache.camel.model.validator.ValidatorDefinition;
070import org.apache.camel.processor.channel.DefaultChannel;
071import org.apache.camel.spi.AnnotationBasedProcessorFactory;
072import org.apache.camel.spi.AsyncProcessorAwaitManager;
073import org.apache.camel.spi.BeanIntrospection;
074import org.apache.camel.spi.BeanProcessorFactory;
075import org.apache.camel.spi.BeanProxyFactory;
076import org.apache.camel.spi.BeanRepository;
077import org.apache.camel.spi.CamelBeanPostProcessor;
078import org.apache.camel.spi.CamelContextNameStrategy;
079import org.apache.camel.spi.ClassResolver;
080import org.apache.camel.spi.ComponentNameResolver;
081import org.apache.camel.spi.ComponentResolver;
082import org.apache.camel.spi.ConfigurerResolver;
083import org.apache.camel.spi.DataFormat;
084import org.apache.camel.spi.DataFormatResolver;
085import org.apache.camel.spi.DataType;
086import org.apache.camel.spi.Debugger;
087import org.apache.camel.spi.DeferServiceFactory;
088import org.apache.camel.spi.EndpointRegistry;
089import org.apache.camel.spi.EndpointStrategy;
090import org.apache.camel.spi.ExecutorServiceManager;
091import org.apache.camel.spi.FactoryFinder;
092import org.apache.camel.spi.FactoryFinderResolver;
093import org.apache.camel.spi.HeadersMapFactory;
094import org.apache.camel.spi.InflightRepository;
095import org.apache.camel.spi.Injector;
096import org.apache.camel.spi.InterceptStrategy;
097import org.apache.camel.spi.Language;
098import org.apache.camel.spi.LanguageResolver;
099import org.apache.camel.spi.LifecycleStrategy;
100import org.apache.camel.spi.LogListener;
101import org.apache.camel.spi.ManagementMBeanAssembler;
102import org.apache.camel.spi.ManagementNameStrategy;
103import org.apache.camel.spi.ManagementStrategy;
104import org.apache.camel.spi.MessageHistoryFactory;
105import org.apache.camel.spi.ModelJAXBContextFactory;
106import org.apache.camel.spi.ModelToXMLDumper;
107import org.apache.camel.spi.NodeIdFactory;
108import org.apache.camel.spi.NormalizedEndpointUri;
109import org.apache.camel.spi.PackageScanClassResolver;
110import org.apache.camel.spi.PackageScanResourceResolver;
111import org.apache.camel.spi.ProcessorFactory;
112import org.apache.camel.spi.PropertiesComponent;
113import org.apache.camel.spi.ReactiveExecutor;
114import org.apache.camel.spi.Registry;
115import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
116import org.apache.camel.spi.RestConfiguration;
117import org.apache.camel.spi.RestRegistry;
118import org.apache.camel.spi.RouteController;
119import org.apache.camel.spi.RoutePolicyFactory;
120import org.apache.camel.spi.RouteStartupOrder;
121import org.apache.camel.spi.RuntimeEndpointRegistry;
122import org.apache.camel.spi.ShutdownStrategy;
123import org.apache.camel.spi.StreamCachingStrategy;
124import org.apache.camel.spi.SupervisingRouteController;
125import org.apache.camel.spi.Tracer;
126import org.apache.camel.spi.Transformer;
127import org.apache.camel.spi.TransformerRegistry;
128import org.apache.camel.spi.TypeConverterRegistry;
129import org.apache.camel.spi.UnitOfWorkFactory;
130import org.apache.camel.spi.UuidGenerator;
131import org.apache.camel.spi.Validator;
132import org.apache.camel.spi.ValidatorRegistry;
133import org.apache.camel.spi.XMLRoutesDefinitionLoader;
134import org.apache.camel.support.DefaultRegistry;
135import org.apache.camel.support.jsse.SSLContextParameters;
136
137@Experimental
138public class LightweightCamelContext implements ExtendedCamelContext, CatalogCamelContext, ModelCamelContext {
139
140    protected volatile CamelContext delegate;
141
142    protected LightweightCamelContext(CamelContext delegate) {
143        this.delegate = delegate;
144    }
145
146    /**
147     * Creates the {@link ModelCamelContext} using
148     * {@link org.apache.camel.support.DefaultRegistry} as registry.
149     * <p/>
150     * Use one of the other constructors to force use an explicit registry.
151     */
152    public LightweightCamelContext() {
153        DefaultCamelContext d = new DefaultCamelContext(false) {
154            @Override
155            public CamelContext getCamelContextReference() {
156                return LightweightCamelContext.this;
157            }
158        };
159        delegate = d;
160        d.build();
161    }
162
163    /**
164     * Creates the {@link CamelContext} using the given {@link BeanRepository}
165     * as first-choice repository, and the
166     * {@link org.apache.camel.support.SimpleRegistry} as fallback, via the
167     * {@link DefaultRegistry} implementation.
168     *
169     * @param repository the bean repository.
170     */
171    public LightweightCamelContext(BeanRepository repository) {
172        this(new DefaultRegistry(repository));
173    }
174
175    /**
176     * Creates the {@link ModelCamelContext} using the given registry
177     *
178     * @param registry the registry
179     */
180    public LightweightCamelContext(Registry registry) {
181        this();
182        setRegistry(registry);
183    }
184
185    public CamelContext getCamelContextReference() {
186        return this;
187    }
188
189    @Override
190    public boolean isStarted() {
191        return delegate.isStarted();
192    }
193
194    @Override
195    public boolean isStarting() {
196        return delegate.isStarting();
197    }
198
199    @Override
200    public boolean isStopped() {
201        return delegate.isStopped();
202    }
203
204    @Override
205    public boolean isStopping() {
206        return delegate.isStopping();
207    }
208
209    @Override
210    public boolean isSuspended() {
211        return delegate.isSuspended();
212    }
213
214    @Override
215    public boolean isRunAllowed() {
216        return delegate.isRunAllowed();
217    }
218
219    @Override
220    public boolean isSuspending() {
221        return delegate.isSuspending();
222    }
223
224    @Override
225    public void build() {
226        delegate.build();
227    }
228
229    @Override
230    public void suspend() {
231        delegate.suspend();
232    }
233
234    @Override
235    public void resume() {
236        delegate.resume();
237    }
238
239    @Override
240    public void shutdown() {
241        delegate.shutdown();
242    }
243
244    @Override
245    public void close() throws Exception {
246        delegate.close();
247    }
248
249    @Override
250    public <T extends CamelContext> T adapt(Class<T> type) {
251        T res = delegate.adapt(type);
252        if (res == delegate) {
253            return type.cast(this);
254        } else {
255            return res;
256        }
257    }
258
259    @Override
260    public <T> T getExtension(Class<T> type) {
261        return delegate.getExtension(type);
262    }
263
264    @Override
265    public <T> void setExtension(Class<T> type, T module) {
266        delegate.setExtension(type, module);
267    }
268
269    @Override
270    public void start() {
271        delegate.start();
272    }
273
274    @Override
275    public void stop() {
276        delegate.stop();
277    }
278
279    @Override
280    public boolean isVetoStarted() {
281        return delegate.isVetoStarted();
282    }
283
284    @Override
285    public String getName() {
286        return delegate.getName();
287    }
288
289    @Override
290    public CamelContextNameStrategy getNameStrategy() {
291        return delegate.getNameStrategy();
292    }
293
294    @Override
295    public void setNameStrategy(CamelContextNameStrategy nameStrategy) {
296        delegate.setNameStrategy(nameStrategy);
297    }
298
299    @Override
300    public ManagementNameStrategy getManagementNameStrategy() {
301        return delegate.getManagementNameStrategy();
302    }
303
304    @Override
305    public void setManagementNameStrategy(ManagementNameStrategy nameStrategy) {
306        delegate.setManagementNameStrategy(nameStrategy);
307    }
308
309    @Override
310    public String getManagementName() {
311        return delegate.getManagementName();
312    }
313
314    @Override
315    public void setManagementName(String name) {
316        delegate.setManagementName(name);
317    }
318
319    @Override
320    public String getVersion() {
321        return delegate.getVersion();
322    }
323
324    @Override
325    public ServiceStatus getStatus() {
326        return delegate.getStatus();
327    }
328
329    @Override
330    public String getUptime() {
331        return delegate.getUptime();
332    }
333
334    @Override
335    public long getUptimeMillis() {
336        return delegate.getUptimeMillis();
337    }
338
339    @Override
340    public Date getStartDate() {
341        return delegate.getStartDate();
342    }
343
344    @Override
345    public void addService(Object object) throws Exception {
346        delegate.addService(object);
347    }
348
349    @Override
350    public void addService(Object object, boolean stopOnShutdown) throws Exception {
351        delegate.addService(object, stopOnShutdown);
352    }
353
354    @Override
355    public void addService(Object object, boolean stopOnShutdown, boolean forceStart) throws Exception {
356        delegate.addService(object, stopOnShutdown, forceStart);
357    }
358
359    @Override
360    public void addPrototypeService(Object object) throws Exception {
361        delegate.addPrototypeService(object);
362    }
363
364    @Override
365    public boolean removeService(Object object) throws Exception {
366        return delegate.removeService(object);
367    }
368
369    @Override
370    public boolean hasService(Object object) {
371        return delegate.hasService(object);
372    }
373
374    @Override
375    public <T> T hasService(Class<T> type) {
376        return delegate.hasService(type);
377    }
378
379    @Override
380    public <T> Set<T> hasServices(Class<T> type) {
381        return delegate.hasServices(type);
382    }
383
384    @Override
385    public void deferStartService(Object object, boolean stopOnShutdown) throws Exception {
386        delegate.deferStartService(object, stopOnShutdown);
387    }
388
389    @Override
390    public void addStartupListener(StartupListener listener) throws Exception {
391        delegate.addStartupListener(listener);
392    }
393
394    @Override
395    public void addComponent(String componentName, Component component) {
396        delegate.addComponent(componentName, component);
397    }
398
399    @Override
400    public Component hasComponent(String componentName) {
401        return delegate.hasComponent(componentName);
402    }
403
404    @Override
405    public Component getComponent(String componentName) {
406        return delegate.getComponent(componentName);
407    }
408
409    @Override
410    public Component getComponent(String name, boolean autoCreateComponents) {
411        return delegate.getComponent(name, autoCreateComponents);
412    }
413
414    @Override
415    public Component getComponent(String name, boolean autoCreateComponents, boolean autoStart) {
416        return delegate.getComponent(name, autoCreateComponents, autoStart);
417    }
418
419    @Override
420    public <T extends Component> T getComponent(String name, Class<T> componentType) {
421        return delegate.getComponent(name, componentType);
422    }
423
424    @Override
425    public List<String> getComponentNames() {
426        return delegate.getComponentNames();
427    }
428
429    @Override
430    public Component removeComponent(String componentName) {
431        return delegate.removeComponent(componentName);
432    }
433
434    @Override
435    public EndpointRegistry<? extends ValueHolder<String>> getEndpointRegistry() {
436        return delegate.getEndpointRegistry();
437    }
438
439    @Override
440    public Endpoint getEndpoint(String uri) {
441        return delegate.getEndpoint(uri);
442    }
443
444    @Override
445    public Endpoint getEndpoint(String uri, Map<String, Object> parameters) {
446        return delegate.getEndpoint(uri, parameters);
447    }
448
449    @Override
450    public <T extends Endpoint> T getEndpoint(String name, Class<T> endpointType) {
451        return delegate.getEndpoint(name, endpointType);
452    }
453
454    @Override
455    public Collection<Endpoint> getEndpoints() {
456        return delegate.getEndpoints();
457    }
458
459    @Override
460    @Deprecated
461    public Map<String, Endpoint> getEndpointMap() {
462        return delegate.getEndpointMap();
463    }
464
465    @Override
466    public Endpoint hasEndpoint(String uri) {
467        return delegate.hasEndpoint(uri);
468    }
469
470    @Override
471    public Endpoint addEndpoint(String uri, Endpoint endpoint) throws Exception {
472        return delegate.addEndpoint(uri, endpoint);
473    }
474
475    @Override
476    public void removeEndpoint(Endpoint endpoint) throws Exception {
477        delegate.removeEndpoint(endpoint);
478    }
479
480    @Override
481    public Collection<Endpoint> removeEndpoints(String pattern) throws Exception {
482        return delegate.removeEndpoints(pattern);
483    }
484
485    @Override
486    public GlobalEndpointConfiguration getGlobalEndpointConfiguration() {
487        return delegate.getGlobalEndpointConfiguration();
488    }
489
490    @Override
491    public void setRouteController(RouteController routeController) {
492        delegate.setRouteController(routeController);
493    }
494
495    @Override
496    public RouteController getRouteController() {
497        return delegate.getRouteController();
498    }
499
500    @Override
501    public List<Route> getRoutes() {
502        return delegate.getRoutes();
503    }
504
505    @Override
506    public int getRoutesSize() {
507        return delegate.getRoutesSize();
508    }
509
510    @Override
511    public Route getRoute(String id) {
512        return delegate.getRoute(id);
513    }
514
515    @Override
516    public Processor getProcessor(String id) {
517        return delegate.getProcessor(id);
518    }
519
520    @Override
521    public <T extends Processor> T getProcessor(String id, Class<T> type) {
522        return delegate.getProcessor(id, type);
523    }
524
525    @Override
526    public void addRoutes(RoutesBuilder builder) throws Exception {
527        delegate.addRoutes(builder);
528    }
529
530    @Override
531    public boolean removeRoute(String routeId) throws Exception {
532        return delegate.removeRoute(routeId);
533    }
534
535    @Override
536    public void addRoutePolicyFactory(RoutePolicyFactory routePolicyFactory) {
537        delegate.addRoutePolicyFactory(routePolicyFactory);
538    }
539
540    @Override
541    public List<RoutePolicyFactory> getRoutePolicyFactories() {
542        return delegate.getRoutePolicyFactories();
543    }
544
545    @Override
546    public void setRestConfiguration(RestConfiguration restConfiguration) {
547        delegate.setRestConfiguration(restConfiguration);
548    }
549
550    @Override
551    public RestConfiguration getRestConfiguration() {
552        return delegate.getRestConfiguration();
553    }
554
555    @Override
556    public RestRegistry getRestRegistry() {
557        return delegate.getRestRegistry();
558    }
559
560    @Override
561    public void setRestRegistry(RestRegistry restRegistry) {
562        delegate.setRestRegistry(restRegistry);
563    }
564
565    @Override
566    public TypeConverter getTypeConverter() {
567        return delegate.getTypeConverter();
568    }
569
570    @Override
571    public TypeConverterRegistry getTypeConverterRegistry() {
572        return delegate.getTypeConverterRegistry();
573    }
574
575    @Override
576    public void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) {
577        delegate.setTypeConverterRegistry(typeConverterRegistry);
578    }
579
580    @Override
581    public Registry getRegistry() {
582        return delegate.getRegistry();
583    }
584
585    @Override
586    public <T> T getRegistry(Class<T> type) {
587        return delegate.getRegistry(type);
588    }
589
590    @Override
591    public Injector getInjector() {
592        return delegate.getInjector();
593    }
594
595    @Override
596    public void setInjector(Injector injector) {
597        delegate.setInjector(injector);
598    }
599
600    @Override
601    public List<LifecycleStrategy> getLifecycleStrategies() {
602        return delegate.getLifecycleStrategies();
603    }
604
605    @Override
606    public void addLifecycleStrategy(LifecycleStrategy lifecycleStrategy) {
607        delegate.addLifecycleStrategy(lifecycleStrategy);
608    }
609
610    @Override
611    public Language resolveLanguage(String language) throws NoSuchLanguageException {
612        return delegate.resolveLanguage(language);
613    }
614
615    @Override
616    public String resolvePropertyPlaceholders(String text) {
617        return delegate.resolvePropertyPlaceholders(text);
618    }
619
620    @Override
621    public PropertiesComponent getPropertiesComponent() {
622        return delegate.getPropertiesComponent();
623    }
624
625    @Override
626    public void setPropertiesComponent(PropertiesComponent propertiesComponent) {
627        delegate.setPropertiesComponent(propertiesComponent);
628    }
629
630    @Override
631    @Deprecated
632    public List<String> getLanguageNames() {
633        return delegate.getLanguageNames();
634    }
635
636    @Override
637    public ProducerTemplate createProducerTemplate() {
638        return delegate.createProducerTemplate();
639    }
640
641    @Override
642    public ProducerTemplate createProducerTemplate(int maximumCacheSize) {
643        return delegate.createProducerTemplate(maximumCacheSize);
644    }
645
646    @Override
647    public FluentProducerTemplate createFluentProducerTemplate() {
648        return delegate.createFluentProducerTemplate();
649    }
650
651    @Override
652    public FluentProducerTemplate createFluentProducerTemplate(int maximumCacheSize) {
653        return delegate.createFluentProducerTemplate(maximumCacheSize);
654    }
655
656    @Override
657    public ConsumerTemplate createConsumerTemplate() {
658        return delegate.createConsumerTemplate();
659    }
660
661    @Override
662    public ConsumerTemplate createConsumerTemplate(int maximumCacheSize) {
663        return delegate.createConsumerTemplate(maximumCacheSize);
664    }
665
666    @Override
667    public DataFormat resolveDataFormat(String name) {
668        return delegate.resolveDataFormat(name);
669    }
670
671    @Override
672    public DataFormat createDataFormat(String name) {
673        return delegate.createDataFormat(name);
674    }
675
676    @Override
677    public Transformer resolveTransformer(String model) {
678        return delegate.resolveTransformer(model);
679    }
680
681    @Override
682    public Transformer resolveTransformer(DataType from, DataType to) {
683        return delegate.resolveTransformer(from, to);
684    }
685
686    @Override
687    public TransformerRegistry getTransformerRegistry() {
688        return delegate.getTransformerRegistry();
689    }
690
691    @Override
692    public Validator resolveValidator(DataType type) {
693        return delegate.resolveValidator(type);
694    }
695
696    @Override
697    public ValidatorRegistry getValidatorRegistry() {
698        return delegate.getValidatorRegistry();
699    }
700
701    @Override
702    public void setGlobalOptions(Map<String, String> globalOptions) {
703        delegate.setGlobalOptions(globalOptions);
704    }
705
706    @Override
707    public Map<String, String> getGlobalOptions() {
708        return delegate.getGlobalOptions();
709    }
710
711    @Override
712    public String getGlobalOption(String key) {
713        return delegate.getGlobalOption(key);
714    }
715
716    @Override
717    public ClassResolver getClassResolver() {
718        return delegate.getClassResolver();
719    }
720
721    @Override
722    public void setClassResolver(ClassResolver resolver) {
723        delegate.setClassResolver(resolver);
724    }
725
726    @Override
727    public ManagementStrategy getManagementStrategy() {
728        return delegate.getManagementStrategy();
729    }
730
731    @Override
732    public void setManagementStrategy(ManagementStrategy strategy) {
733        delegate.setManagementStrategy(strategy);
734    }
735
736    @Override
737    public void disableJMX() throws IllegalStateException {
738        delegate.disableJMX();
739    }
740
741    @Override
742    public InflightRepository getInflightRepository() {
743        return delegate.getInflightRepository();
744    }
745
746    @Override
747    public void setInflightRepository(InflightRepository repository) {
748        delegate.setInflightRepository(repository);
749    }
750
751    @Override
752    public ClassLoader getApplicationContextClassLoader() {
753        return delegate.getApplicationContextClassLoader();
754    }
755
756    @Override
757    public void setApplicationContextClassLoader(ClassLoader classLoader) {
758        delegate.setApplicationContextClassLoader(classLoader);
759    }
760
761    @Override
762    public ShutdownStrategy getShutdownStrategy() {
763        return delegate.getShutdownStrategy();
764    }
765
766    @Override
767    public void setShutdownStrategy(ShutdownStrategy shutdownStrategy) {
768        delegate.setShutdownStrategy(shutdownStrategy);
769    }
770
771    @Override
772    public ExecutorServiceManager getExecutorServiceManager() {
773        return delegate.getExecutorServiceManager();
774    }
775
776    @Override
777    public void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
778        delegate.setExecutorServiceManager(executorServiceManager);
779    }
780
781    @Override
782    public MessageHistoryFactory getMessageHistoryFactory() {
783        return delegate.getMessageHistoryFactory();
784    }
785
786    @Override
787    public void setMessageHistoryFactory(MessageHistoryFactory messageHistoryFactory) {
788        delegate.setMessageHistoryFactory(messageHistoryFactory);
789    }
790
791    @Override
792    public Debugger getDebugger() {
793        return delegate.getDebugger();
794    }
795
796    @Override
797    public void setDebugger(Debugger debugger) {
798        delegate.setDebugger(debugger);
799    }
800
801    @Override
802    public Tracer getTracer() {
803        return delegate.getTracer();
804    }
805
806    @Override
807    public void setTracer(Tracer tracer) {
808        delegate.setTracer(tracer);
809    }
810
811    @Override
812    public UuidGenerator getUuidGenerator() {
813        return delegate.getUuidGenerator();
814    }
815
816    @Override
817    public void setUuidGenerator(UuidGenerator uuidGenerator) {
818        delegate.setUuidGenerator(uuidGenerator);
819    }
820
821    @Override
822    public Boolean isLoadTypeConverters() {
823        return delegate.isLoadTypeConverters();
824    }
825
826    @Override
827    public void setLoadTypeConverters(Boolean loadTypeConverters) {
828        delegate.setLoadTypeConverters(loadTypeConverters);
829    }
830
831    @Override
832    public Boolean isTypeConverterStatisticsEnabled() {
833        return delegate.isTypeConverterStatisticsEnabled();
834    }
835
836    @Override
837    public void setTypeConverterStatisticsEnabled(Boolean typeConverterStatisticsEnabled) {
838        delegate.setTypeConverterStatisticsEnabled(typeConverterStatisticsEnabled);
839    }
840
841    @Override
842    public Boolean isUseMDCLogging() {
843        return delegate.isUseMDCLogging();
844    }
845
846    @Override
847    public void setUseMDCLogging(Boolean useMDCLogging) {
848        delegate.setUseMDCLogging(useMDCLogging);
849    }
850
851    @Override
852    public String getMDCLoggingKeysPattern() {
853        return delegate.getMDCLoggingKeysPattern();
854    }
855
856    @Override
857    public void setMDCLoggingKeysPattern(String pattern) {
858        delegate.setMDCLoggingKeysPattern(pattern);
859    }
860
861    @Override
862    public Boolean isUseDataType() {
863        return delegate.isUseDataType();
864    }
865
866    @Override
867    public void setUseDataType(Boolean useDataType) {
868        delegate.setUseDataType(useDataType);
869    }
870
871    @Override
872    public Boolean isUseBreadcrumb() {
873        return delegate.isUseBreadcrumb();
874    }
875
876    @Override
877    public void setUseBreadcrumb(Boolean useBreadcrumb) {
878        delegate.setUseBreadcrumb(useBreadcrumb);
879    }
880
881    @Override
882    public StreamCachingStrategy getStreamCachingStrategy() {
883        return delegate.getStreamCachingStrategy();
884    }
885
886    @Override
887    public void setStreamCachingStrategy(StreamCachingStrategy streamCachingStrategy) {
888        delegate.setStreamCachingStrategy(streamCachingStrategy);
889    }
890
891    @Override
892    public RuntimeEndpointRegistry getRuntimeEndpointRegistry() {
893        return delegate.getRuntimeEndpointRegistry();
894    }
895
896    @Override
897    public void setRuntimeEndpointRegistry(RuntimeEndpointRegistry runtimeEndpointRegistry) {
898        delegate.setRuntimeEndpointRegistry(runtimeEndpointRegistry);
899    }
900
901    @Override
902    public void setSSLContextParameters(SSLContextParameters sslContextParameters) {
903        delegate.setSSLContextParameters(sslContextParameters);
904    }
905
906    @Override
907    public SSLContextParameters getSSLContextParameters() {
908        return delegate.getSSLContextParameters();
909    }
910
911    @Override
912    public void setStreamCaching(Boolean cache) {
913        delegate.setStreamCaching(cache);
914    }
915
916    @Override
917    public Boolean isStreamCaching() {
918        return delegate.isStreamCaching();
919    }
920
921    @Override
922    public void setTracing(Boolean tracing) {
923        delegate.setTracing(tracing);
924    }
925
926    @Override
927    public Boolean isTracing() {
928        return delegate.isTracing();
929    }
930
931    @Override
932    public String getTracingPattern() {
933        return delegate.getTracingPattern();
934    }
935
936    @Override
937    public void setTracingPattern(String tracePattern) {
938        delegate.setTracingPattern(tracePattern);
939    }
940
941    @Override
942    public void setBacklogTracing(Boolean backlogTrace) {
943        delegate.setBacklogTracing(backlogTrace);
944    }
945
946    @Override
947    public Boolean isBacklogTracing() {
948        return delegate.isBacklogTracing();
949    }
950
951    @Override
952    public void setDebugging(Boolean debugging) {
953        delegate.setDebugging(debugging);
954    }
955
956    @Override
957    public Boolean isDebugging() {
958        return delegate.isDebugging();
959    }
960
961    @Override
962    public void setMessageHistory(Boolean messageHistory) {
963        delegate.setMessageHistory(messageHistory);
964    }
965
966    @Override
967    public Boolean isMessageHistory() {
968        return delegate.isMessageHistory();
969    }
970
971    @Override
972    public void setLogMask(Boolean logMask) {
973        delegate.setLogMask(logMask);
974    }
975
976    @Override
977    public Boolean isLogMask() {
978        return delegate.isLogMask();
979    }
980
981    @Override
982    public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
983        delegate.setLogExhaustedMessageBody(logExhaustedMessageBody);
984    }
985
986    @Override
987    public Boolean isLogExhaustedMessageBody() {
988        return delegate.isLogExhaustedMessageBody();
989    }
990
991    @Override
992    public void setDelayer(Long delay) {
993        delegate.setDelayer(delay);
994    }
995
996    @Override
997    public Long getDelayer() {
998        return delegate.getDelayer();
999    }
1000
1001    @Override
1002    public void setAutoStartup(Boolean autoStartup) {
1003        delegate.setAutoStartup(autoStartup);
1004    }
1005
1006    @Override
1007    public Boolean isAutoStartup() {
1008        return delegate.isAutoStartup();
1009    }
1010
1011    @Override
1012    public void setShutdownRoute(ShutdownRoute shutdownRoute) {
1013        delegate.setShutdownRoute(shutdownRoute);
1014    }
1015
1016    @Override
1017    public ShutdownRoute getShutdownRoute() {
1018        return delegate.getShutdownRoute();
1019    }
1020
1021    @Override
1022    public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
1023        delegate.setShutdownRunningTask(shutdownRunningTask);
1024    }
1025
1026    @Override
1027    public ShutdownRunningTask getShutdownRunningTask() {
1028        return delegate.getShutdownRunningTask();
1029    }
1030
1031    @Override
1032    public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
1033        delegate.setAllowUseOriginalMessage(allowUseOriginalMessage);
1034    }
1035
1036    @Override
1037    public Boolean isAllowUseOriginalMessage() {
1038        return delegate.isAllowUseOriginalMessage();
1039    }
1040
1041    @Override
1042    public Boolean isCaseInsensitiveHeaders() {
1043        return delegate.isCaseInsensitiveHeaders();
1044    }
1045
1046    @Override
1047    public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
1048        delegate.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
1049    }
1050
1051    //
1052    // ExtendedCamelContext
1053    //
1054
1055    protected ExtendedCamelContext getExtendedCamelContext() {
1056        return delegate.adapt(ExtendedCamelContext.class);
1057    }
1058
1059    @Override
1060    public void setName(String name) {
1061        getExtendedCamelContext().setName(name);
1062    }
1063
1064    @Override
1065    public void setRegistry(Registry registry) {
1066        getExtendedCamelContext().setRegistry(registry);
1067    }
1068
1069    @Override
1070    public void setupRoutes(boolean done) {
1071        getExtendedCamelContext().setupRoutes(done);
1072    }
1073
1074    @Override
1075    public boolean isSetupRoutes() {
1076        return getExtendedCamelContext().isSetupRoutes();
1077    }
1078
1079    @Override
1080    public void registerEndpointCallback(EndpointStrategy strategy) {
1081        getExtendedCamelContext().registerEndpointCallback(strategy);
1082    }
1083
1084    @Override
1085    public Endpoint getPrototypeEndpoint(String uri) {
1086        return getExtendedCamelContext().getPrototypeEndpoint(uri);
1087    }
1088
1089    @Override
1090    public Endpoint getPrototypeEndpoint(NormalizedEndpointUri uri) {
1091        return getExtendedCamelContext().getPrototypeEndpoint(uri);
1092    }
1093
1094    @Override
1095    public Endpoint hasEndpoint(NormalizedEndpointUri uri) {
1096        return getExtendedCamelContext().hasEndpoint(uri);
1097    }
1098
1099    @Override
1100    public Endpoint getEndpoint(NormalizedEndpointUri uri) {
1101        return getExtendedCamelContext().getEndpoint(uri);
1102    }
1103
1104    @Override
1105    public Endpoint getEndpoint(NormalizedEndpointUri uri, Map<String, Object> parameters) {
1106        return getExtendedCamelContext().getEndpoint(uri, parameters);
1107    }
1108
1109    @Override
1110    public NormalizedEndpointUri normalizeUri(String uri) {
1111        return getExtendedCamelContext().normalizeUri(uri);
1112    }
1113
1114    @Override
1115    public List<RouteStartupOrder> getRouteStartupOrder() {
1116        return getExtendedCamelContext().getRouteStartupOrder();
1117    }
1118
1119    @Override
1120    public CamelBeanPostProcessor getBeanPostProcessor() {
1121        return getExtendedCamelContext().getBeanPostProcessor();
1122    }
1123
1124    @Override
1125    public ManagementMBeanAssembler getManagementMBeanAssembler() {
1126        return getExtendedCamelContext().getManagementMBeanAssembler();
1127    }
1128
1129    @Override
1130    public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor, boolean shutdownExecutorService) {
1131        return getExtendedCamelContext().createMulticast(processors, executor, shutdownExecutorService);
1132    }
1133
1134    @Override
1135    public ErrorHandlerFactory getErrorHandlerFactory() {
1136        return getExtendedCamelContext().getErrorHandlerFactory();
1137    }
1138
1139    @Override
1140    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
1141        getExtendedCamelContext().setErrorHandlerFactory(errorHandlerFactory);
1142    }
1143
1144    @Override
1145    public void setNodeIdFactory(NodeIdFactory factory) {
1146        getExtendedCamelContext().setNodeIdFactory(factory);
1147    }
1148
1149    @Override
1150    public NodeIdFactory getNodeIdFactory() {
1151        return getExtendedCamelContext().getNodeIdFactory();
1152    }
1153
1154    @Override
1155    public ComponentResolver getComponentResolver() {
1156        return getExtendedCamelContext().getComponentResolver();
1157    }
1158
1159    @Override
1160    public void setComponentResolver(ComponentResolver componentResolver) {
1161        getExtendedCamelContext().setComponentResolver(componentResolver);
1162    }
1163
1164    @Override
1165    public ComponentNameResolver getComponentNameResolver() {
1166        return getExtendedCamelContext().getComponentNameResolver();
1167    }
1168
1169    @Override
1170    public void setComponentNameResolver(ComponentNameResolver componentNameResolver) {
1171        getExtendedCamelContext().setComponentNameResolver(componentNameResolver);
1172    }
1173
1174    @Override
1175    public LanguageResolver getLanguageResolver() {
1176        return getExtendedCamelContext().getLanguageResolver();
1177    }
1178
1179    @Override
1180    public void setLanguageResolver(LanguageResolver languageResolver) {
1181        getExtendedCamelContext().setLanguageResolver(languageResolver);
1182    }
1183
1184    @Override
1185    public DataFormatResolver getDataFormatResolver() {
1186        return getExtendedCamelContext().getDataFormatResolver();
1187    }
1188
1189    @Override
1190    public void setDataFormatResolver(DataFormatResolver dataFormatResolver) {
1191        getExtendedCamelContext().setDataFormatResolver(dataFormatResolver);
1192    }
1193
1194    @Override
1195    public PackageScanClassResolver getPackageScanClassResolver() {
1196        return getExtendedCamelContext().getPackageScanClassResolver();
1197    }
1198
1199    @Override
1200    public void setPackageScanClassResolver(PackageScanClassResolver resolver) {
1201        getExtendedCamelContext().setPackageScanClassResolver(resolver);
1202    }
1203
1204    @Override
1205    public PackageScanResourceResolver getPackageScanResourceResolver() {
1206        return getExtendedCamelContext().getPackageScanResourceResolver();
1207    }
1208
1209    @Override
1210    public void setPackageScanResourceResolver(PackageScanResourceResolver resolver) {
1211        getExtendedCamelContext().setPackageScanResourceResolver(resolver);
1212    }
1213
1214    @Override
1215    public FactoryFinder getDefaultFactoryFinder() {
1216        return getExtendedCamelContext().getDefaultFactoryFinder();
1217    }
1218
1219    @Override
1220    public FactoryFinder getFactoryFinder(String path) {
1221        return getExtendedCamelContext().getFactoryFinder(path);
1222    }
1223
1224    @Override
1225    public void setFactoryFinderResolver(FactoryFinderResolver resolver) {
1226        getExtendedCamelContext().setFactoryFinderResolver(resolver);
1227    }
1228
1229    @Override
1230    public FactoryFinderResolver getFactoryFinderResolver() {
1231        return getExtendedCamelContext().getFactoryFinderResolver();
1232    }
1233
1234    @Override
1235    public ProcessorFactory getProcessorFactory() {
1236        return getExtendedCamelContext().getProcessorFactory();
1237    }
1238
1239    @Override
1240    public void setProcessorFactory(ProcessorFactory processorFactory) {
1241        getExtendedCamelContext().setProcessorFactory(processorFactory);
1242    }
1243
1244    @Override
1245    public ModelJAXBContextFactory getModelJAXBContextFactory() {
1246        return getExtendedCamelContext().getModelJAXBContextFactory();
1247    }
1248
1249    @Override
1250    public void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory) {
1251        getExtendedCamelContext().setModelJAXBContextFactory(modelJAXBContextFactory);
1252    }
1253
1254    @Override
1255    public DeferServiceFactory getDeferServiceFactory() {
1256        return getExtendedCamelContext().getDeferServiceFactory();
1257    }
1258
1259    @Override
1260    public UnitOfWorkFactory getUnitOfWorkFactory() {
1261        return getExtendedCamelContext().getUnitOfWorkFactory();
1262    }
1263
1264    @Override
1265    public void setUnitOfWorkFactory(UnitOfWorkFactory unitOfWorkFactory) {
1266        getExtendedCamelContext().setUnitOfWorkFactory(unitOfWorkFactory);
1267    }
1268
1269    @Override
1270    public AnnotationBasedProcessorFactory getAnnotationBasedProcessorFactory() {
1271        return getExtendedCamelContext().getAnnotationBasedProcessorFactory();
1272    }
1273
1274    @Override
1275    public BeanProxyFactory getBeanProxyFactory() {
1276        return getExtendedCamelContext().getBeanProxyFactory();
1277    }
1278
1279    @Override
1280    public BeanProcessorFactory getBeanProcessorFactory() {
1281        return getExtendedCamelContext().getBeanProcessorFactory();
1282    }
1283
1284    @Override
1285    public ScheduledExecutorService getErrorHandlerExecutorService() {
1286        return getExtendedCamelContext().getErrorHandlerExecutorService();
1287    }
1288
1289    @Override
1290    public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
1291        getExtendedCamelContext().addInterceptStrategy(interceptStrategy);
1292    }
1293
1294    @Override
1295    public List<InterceptStrategy> getInterceptStrategies() {
1296        return getExtendedCamelContext().getInterceptStrategies();
1297    }
1298
1299    @Override
1300    public void setupManagement(Map<String, Object> options) {
1301        getExtendedCamelContext().setupManagement(options);
1302    }
1303
1304    @Override
1305    public Set<LogListener> getLogListeners() {
1306        return getExtendedCamelContext().getLogListeners();
1307    }
1308
1309    @Override
1310    public void addLogListener(LogListener listener) {
1311        getExtendedCamelContext().addLogListener(listener);
1312    }
1313
1314    @Override
1315    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
1316        return getExtendedCamelContext().getAsyncProcessorAwaitManager();
1317    }
1318
1319    @Override
1320    public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager manager) {
1321        getExtendedCamelContext().setAsyncProcessorAwaitManager(manager);
1322    }
1323
1324    @Override
1325    public BeanIntrospection getBeanIntrospection() {
1326        return getExtendedCamelContext().getBeanIntrospection();
1327    }
1328
1329    @Override
1330    public void setBeanIntrospection(BeanIntrospection beanIntrospection) {
1331        getExtendedCamelContext().setBeanIntrospection(beanIntrospection);
1332    }
1333
1334    @Override
1335    public HeadersMapFactory getHeadersMapFactory() {
1336        return getExtendedCamelContext().getHeadersMapFactory();
1337    }
1338
1339    @Override
1340    public void setHeadersMapFactory(HeadersMapFactory factory) {
1341        getExtendedCamelContext().setHeadersMapFactory(factory);
1342    }
1343
1344    @Override
1345    public ReactiveExecutor getReactiveExecutor() {
1346        return getExtendedCamelContext().getReactiveExecutor();
1347    }
1348
1349    @Override
1350    public void setReactiveExecutor(ReactiveExecutor reactiveExecutor) {
1351        getExtendedCamelContext().setReactiveExecutor(reactiveExecutor);
1352    }
1353
1354    @Override
1355    public boolean isEventNotificationApplicable() {
1356        return getExtendedCamelContext().isEventNotificationApplicable();
1357    }
1358
1359    @Override
1360    public void setEventNotificationApplicable(boolean eventNotificationApplicable) {
1361        getExtendedCamelContext().setEventNotificationApplicable(eventNotificationApplicable);
1362    }
1363
1364    @Override
1365    public void setXMLRoutesDefinitionLoader(XMLRoutesDefinitionLoader xmlRoutesDefinitionLoader) {
1366        getExtendedCamelContext().setXMLRoutesDefinitionLoader(xmlRoutesDefinitionLoader);
1367    }
1368
1369    @Override
1370    public XMLRoutesDefinitionLoader getXMLRoutesDefinitionLoader() {
1371        return getExtendedCamelContext().getXMLRoutesDefinitionLoader();
1372    }
1373
1374    @Override
1375    public void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper) {
1376        getExtendedCamelContext().setModelToXMLDumper(modelToXMLDumper);
1377    }
1378
1379    @Override
1380    public ModelToXMLDumper getModelToXMLDumper() {
1381        return getExtendedCamelContext().getModelToXMLDumper();
1382    }
1383
1384    @Override
1385    public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
1386        getExtendedCamelContext().setRestBindingJaxbDataFormatFactory(restBindingJaxbDataFormatFactory);
1387    }
1388
1389    @Override
1390    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
1391        return getExtendedCamelContext().getRestBindingJaxbDataFormatFactory();
1392    }
1393
1394    @Override
1395    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
1396        return getExtendedCamelContext().getRuntimeCamelCatalog();
1397    }
1398
1399    @Override
1400    public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
1401        getExtendedCamelContext().setRuntimeCamelCatalog(runtimeCamelCatalog);
1402    }
1403
1404    @Override
1405    public ConfigurerResolver getConfigurerResolver() {
1406        return getExtendedCamelContext().getConfigurerResolver();
1407    }
1408
1409    @Override
1410    public void setConfigurerResolver(ConfigurerResolver configurerResolver) {
1411        getExtendedCamelContext().setConfigurerResolver(configurerResolver);
1412    }
1413
1414    @Override
1415    public RouteController getInternalRouteController() {
1416        return getExtendedCamelContext().getInternalRouteController();
1417    }
1418
1419    @Override
1420    public void addRoute(Route route) {
1421        getExtendedCamelContext().addRoute(route);
1422    }
1423
1424    @Override
1425    public void removeRoute(Route route) {
1426        getExtendedCamelContext().removeRoute(route);
1427    }
1428
1429    @Override
1430    public Processor createErrorHandler(Route route, Processor processor) throws Exception {
1431        return getExtendedCamelContext().createErrorHandler(route, processor);
1432    }
1433
1434    //
1435    // CatalogCamelContext
1436    //
1437
1438    protected CatalogCamelContext getCatalogCamelContext() {
1439        return delegate.adapt(CatalogCamelContext.class);
1440    }
1441
1442    @Override
1443    public String getComponentParameterJsonSchema(String componentName) throws IOException {
1444        return getCatalogCamelContext().getComponentParameterJsonSchema(componentName);
1445    }
1446
1447    @Override
1448    public String getDataFormatParameterJsonSchema(String dataFormatName) throws IOException {
1449        return getCatalogCamelContext().getDataFormatParameterJsonSchema(dataFormatName);
1450    }
1451
1452    @Override
1453    public String getLanguageParameterJsonSchema(String languageName) throws IOException {
1454        return getCatalogCamelContext().getLanguageParameterJsonSchema(languageName);
1455    }
1456
1457    @Override
1458    public String getEipParameterJsonSchema(String eipName) throws IOException {
1459        return getCatalogCamelContext().getEipParameterJsonSchema(eipName);
1460    }
1461
1462    //
1463    // ModelCamelContext
1464    //
1465
1466    protected ModelCamelContext getModelCamelContext() {
1467        return delegate.adapt(ModelCamelContext.class);
1468    }
1469
1470    @Override
1471    public List<RouteDefinition> getRouteDefinitions() {
1472        return getModelCamelContext().getRouteDefinitions();
1473    }
1474
1475    @Override
1476    public RouteDefinition getRouteDefinition(String id) {
1477        return getModelCamelContext().getRouteDefinition(id);
1478    }
1479
1480    @Override
1481    public void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
1482        getModelCamelContext().addRouteDefinitions(routeDefinitions);
1483    }
1484
1485    @Override
1486    public void addRouteDefinition(RouteDefinition routeDefinition) throws Exception {
1487        getModelCamelContext().addRouteDefinition(routeDefinition);
1488    }
1489
1490    @Override
1491    public void removeRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
1492        getModelCamelContext().removeRouteDefinitions(routeDefinitions);
1493    }
1494
1495    @Override
1496    public void removeRouteDefinition(RouteDefinition routeDefinition) throws Exception {
1497        getModelCamelContext().removeRouteDefinition(routeDefinition);
1498    }
1499
1500    @Override
1501    public List<RestDefinition> getRestDefinitions() {
1502        return getModelCamelContext().getRestDefinitions();
1503    }
1504
1505    @Override
1506    public void addRestDefinitions(Collection<RestDefinition> restDefinitions, boolean addToRoutes) throws Exception {
1507        getModelCamelContext().addRestDefinitions(restDefinitions, addToRoutes);
1508    }
1509
1510    @Override
1511    public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
1512        getModelCamelContext().setDataFormats(dataFormats);
1513    }
1514
1515    @Override
1516    public Map<String, DataFormatDefinition> getDataFormats() {
1517        return getModelCamelContext().getDataFormats();
1518    }
1519
1520    @Override
1521    public DataFormatDefinition resolveDataFormatDefinition(String name) {
1522        return getModelCamelContext().resolveDataFormatDefinition(name);
1523    }
1524
1525    @Override
1526    public ProcessorDefinition<?> getProcessorDefinition(String id) {
1527        return getModelCamelContext().getProcessorDefinition(id);
1528    }
1529
1530    @Override
1531    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
1532        return getModelCamelContext().getProcessorDefinition(id, type);
1533    }
1534
1535    @Override
1536    public void setValidators(List<ValidatorDefinition> validators) {
1537        getModelCamelContext().setValidators(validators);
1538    }
1539
1540    @Override
1541    public HystrixConfigurationDefinition getHystrixConfiguration(String id) {
1542        return getModelCamelContext().getHystrixConfiguration(id);
1543    }
1544
1545    @Override
1546    public void setHystrixConfiguration(HystrixConfigurationDefinition configuration) {
1547        getModelCamelContext().setHystrixConfiguration(configuration);
1548    }
1549
1550    @Override
1551    public void setHystrixConfigurations(List<HystrixConfigurationDefinition> configurations) {
1552        getModelCamelContext().setHystrixConfigurations(configurations);
1553    }
1554
1555    @Override
1556    public void addHystrixConfiguration(String id, HystrixConfigurationDefinition configuration) {
1557        getModelCamelContext().addHystrixConfiguration(id, configuration);
1558    }
1559
1560    @Override
1561    public Resilience4jConfigurationDefinition getResilience4jConfiguration(String id) {
1562        return getModelCamelContext().getResilience4jConfiguration(id);
1563    }
1564
1565    @Override
1566    public void setResilience4jConfiguration(Resilience4jConfigurationDefinition configuration) {
1567        getModelCamelContext().setResilience4jConfiguration(configuration);
1568    }
1569
1570    @Override
1571    public void setResilience4jConfigurations(List<Resilience4jConfigurationDefinition> configurations) {
1572        getModelCamelContext().setResilience4jConfigurations(configurations);
1573    }
1574
1575    @Override
1576    public void addResilience4jConfiguration(String id, Resilience4jConfigurationDefinition configuration) {
1577        getModelCamelContext().addResilience4jConfiguration(id, configuration);
1578    }
1579
1580    @Override
1581    public FaultToleranceConfigurationDefinition getFaultToleranceConfiguration(String id) {
1582        return getModelCamelContext().getFaultToleranceConfiguration(id);
1583    }
1584
1585    @Override
1586    public void setFaultToleranceConfiguration(FaultToleranceConfigurationDefinition configuration) {
1587        getModelCamelContext().setFaultToleranceConfiguration(configuration);
1588    }
1589
1590    @Override
1591    public void setFaultToleranceConfigurations(List<FaultToleranceConfigurationDefinition> configurations) {
1592        getModelCamelContext().setFaultToleranceConfigurations(configurations);
1593    }
1594
1595    @Override
1596    public void addFaultToleranceConfiguration(String id, FaultToleranceConfigurationDefinition configuration) {
1597        getModelCamelContext().addFaultToleranceConfiguration(id, configuration);
1598    }
1599
1600    @Override
1601    public List<ValidatorDefinition> getValidators() {
1602        return getModelCamelContext().getValidators();
1603    }
1604
1605    @Override
1606    public void setTransformers(List<TransformerDefinition> transformers) {
1607        getModelCamelContext().setTransformers(transformers);
1608    }
1609
1610    @Override
1611    public List<TransformerDefinition> getTransformers() {
1612        return getModelCamelContext().getTransformers();
1613    }
1614
1615    @Override
1616    public ServiceCallConfigurationDefinition getServiceCallConfiguration(String serviceName) {
1617        return getModelCamelContext().getServiceCallConfiguration(serviceName);
1618    }
1619
1620    @Override
1621    public void setServiceCallConfiguration(ServiceCallConfigurationDefinition configuration) {
1622        getModelCamelContext().setServiceCallConfiguration(configuration);
1623    }
1624
1625    @Override
1626    public void setServiceCallConfigurations(List<ServiceCallConfigurationDefinition> configurations) {
1627        getModelCamelContext().setServiceCallConfigurations(configurations);
1628    }
1629
1630    @Override
1631    public void addServiceCallConfiguration(String serviceName, ServiceCallConfigurationDefinition configuration) {
1632        getModelCamelContext().addServiceCallConfiguration(serviceName, configuration);
1633    }
1634
1635    @Override
1636    public void startRouteDefinitions() throws Exception {
1637        getModelCamelContext().startRouteDefinitions();
1638    }
1639
1640    @Override
1641    public void startRouteDefinitions(List<RouteDefinition> routeDefinitions) throws Exception {
1642        getModelCamelContext().startRouteDefinitions(routeDefinitions);
1643    }
1644
1645    @Override
1646    public void setRouteFilterPattern(String include, String exclude) {
1647        getModelCamelContext().setRouteFilterPattern(include, exclude);
1648    }
1649
1650    @Override
1651    public void setRouteFilter(Function<RouteDefinition, Boolean> filter) {
1652        getModelCamelContext().setRouteFilter(filter);
1653    }
1654
1655    @Override
1656    public Function<RouteDefinition, Boolean> getRouteFilter() {
1657        return getModelCamelContext().getRouteFilter();
1658    }
1659
1660    @Override
1661    public Expression createExpression(ExpressionDefinition definition) {
1662        return getModelCamelContext().createExpression(definition);
1663    }
1664
1665    @Override
1666    public Predicate createPredicate(ExpressionDefinition definition) {
1667        return getModelCamelContext().createPredicate(definition);
1668    }
1669
1670    @Override
1671    public RouteDefinition adviceWith(RouteDefinition definition, AdviceWithRouteBuilder builder) throws Exception {
1672        return getModelCamelContext().adviceWith(definition, builder);
1673    }
1674
1675    @Override
1676    public void registerValidator(ValidatorDefinition validator) {
1677        getModelCamelContext().registerValidator(validator);
1678    }
1679
1680    @Override
1681    public void registerTransformer(TransformerDefinition transformer) {
1682        getModelCamelContext().registerTransformer(transformer);
1683    }
1684
1685    //
1686    // Immutable
1687    //
1688
1689    public void init() {
1690        if (delegate instanceof LightweightRuntimeCamelContext) {
1691            return;
1692        }
1693        delegate.init();
1694        for (Route route : delegate.getRoutes()) {
1695            clearModelReferences(route);
1696        }
1697        delegate = new LightweightRuntimeCamelContext(this, delegate);
1698    }
1699
1700    private void clearModelReferences(Route r) {
1701        if (r instanceof DefaultRoute) {
1702            ((DefaultRoute) r).clearModelReferences();
1703        }
1704        clearModelReferences(r.navigate());
1705    }
1706
1707    private void clearModelReferences(Navigate<Processor> nav) {
1708        for (Processor processor : nav.next()) {
1709            if (processor instanceof DefaultChannel) {
1710                ((DefaultChannel) processor).clearModelReferences();
1711            }
1712            if (processor instanceof Navigate) {
1713                clearModelReferences((Navigate<Processor>) processor);
1714            }
1715        }
1716    }
1717
1718    public void startImmutable() {
1719        delegate.start();
1720    }
1721
1722}