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.function.Function;
026
027import org.apache.camel.CamelContext;
028import org.apache.camel.CatalogCamelContext;
029import org.apache.camel.Component;
030import org.apache.camel.ConsumerTemplate;
031import org.apache.camel.Endpoint;
032import org.apache.camel.Experimental;
033import org.apache.camel.Expression;
034import org.apache.camel.ExtendedCamelContext;
035import org.apache.camel.FluentProducerTemplate;
036import org.apache.camel.GlobalEndpointConfiguration;
037import org.apache.camel.NoSuchLanguageException;
038import org.apache.camel.Predicate;
039import org.apache.camel.Processor;
040import org.apache.camel.ProducerTemplate;
041import org.apache.camel.Route;
042import org.apache.camel.RouteConfigurationsBuilder;
043import org.apache.camel.RouteTemplateContext;
044import org.apache.camel.RoutesBuilder;
045import org.apache.camel.ServiceStatus;
046import org.apache.camel.ShutdownRoute;
047import org.apache.camel.ShutdownRunningTask;
048import org.apache.camel.StartupListener;
049import org.apache.camel.StartupSummaryLevel;
050import org.apache.camel.TypeConverter;
051import org.apache.camel.ValueHolder;
052import org.apache.camel.impl.DefaultCamelContext;
053import org.apache.camel.model.DataFormatDefinition;
054import org.apache.camel.model.FaultToleranceConfigurationDefinition;
055import org.apache.camel.model.ModelCamelContext;
056import org.apache.camel.model.ModelLifecycleStrategy;
057import org.apache.camel.model.ProcessorDefinition;
058import org.apache.camel.model.Resilience4jConfigurationDefinition;
059import org.apache.camel.model.RouteConfigurationDefinition;
060import org.apache.camel.model.RouteDefinition;
061import org.apache.camel.model.RouteTemplateDefinition;
062import org.apache.camel.model.TemplatedRouteDefinition;
063import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
064import org.apache.camel.model.language.ExpressionDefinition;
065import org.apache.camel.model.rest.RestDefinition;
066import org.apache.camel.model.transformer.TransformerDefinition;
067import org.apache.camel.model.validator.ValidatorDefinition;
068import org.apache.camel.spi.BeanRepository;
069import org.apache.camel.spi.CamelContextNameStrategy;
070import org.apache.camel.spi.ClassResolver;
071import org.apache.camel.spi.DataFormat;
072import org.apache.camel.spi.DataType;
073import org.apache.camel.spi.Debugger;
074import org.apache.camel.spi.EndpointRegistry;
075import org.apache.camel.spi.ExecutorServiceManager;
076import org.apache.camel.spi.InflightRepository;
077import org.apache.camel.spi.Injector;
078import org.apache.camel.spi.Language;
079import org.apache.camel.spi.LifecycleStrategy;
080import org.apache.camel.spi.ManagementNameStrategy;
081import org.apache.camel.spi.ManagementStrategy;
082import org.apache.camel.spi.MessageHistoryFactory;
083import org.apache.camel.spi.ModelReifierFactory;
084import org.apache.camel.spi.PropertiesComponent;
085import org.apache.camel.spi.Registry;
086import org.apache.camel.spi.RestConfiguration;
087import org.apache.camel.spi.RestRegistry;
088import org.apache.camel.spi.RouteController;
089import org.apache.camel.spi.RoutePolicyFactory;
090import org.apache.camel.spi.RuntimeEndpointRegistry;
091import org.apache.camel.spi.ShutdownStrategy;
092import org.apache.camel.spi.StreamCachingStrategy;
093import org.apache.camel.spi.Tracer;
094import org.apache.camel.spi.Transformer;
095import org.apache.camel.spi.TransformerRegistry;
096import org.apache.camel.spi.TypeConverterRegistry;
097import org.apache.camel.spi.UuidGenerator;
098import org.apache.camel.spi.Validator;
099import org.apache.camel.spi.ValidatorRegistry;
100import org.apache.camel.support.DefaultRegistry;
101import org.apache.camel.support.jsse.SSLContextParameters;
102import org.apache.camel.vault.VaultConfiguration;
103
104@Experimental
105public class LightweightCamelContext implements CamelContext, CatalogCamelContext, ModelCamelContext {
106
107    protected volatile CamelContext delegate;
108
109    protected LightweightCamelContext(CamelContext delegate) {
110        this.delegate = delegate;
111    }
112
113    /**
114     * Creates the {@link ModelCamelContext} using {@link org.apache.camel.support.DefaultRegistry} as registry.
115     * <p/>
116     * Use one of the other constructors to force use an explicit registry.
117     */
118    public LightweightCamelContext() {
119        DefaultCamelContext d = new DefaultCamelContext(false) {
120            @Override
121            public CamelContext getCamelContextReference() {
122                return LightweightCamelContext.this;
123            }
124        };
125        delegate = d;
126        d.build();
127    }
128
129    /**
130     * Creates the {@link CamelContext} using the given {@link BeanRepository} as first-choice repository, and the
131     * {@link org.apache.camel.support.SimpleRegistry} as fallback, via the {@link DefaultRegistry} implementation.
132     *
133     * @param repository the bean repository.
134     */
135    public LightweightCamelContext(BeanRepository repository) {
136        this(new DefaultRegistry(repository));
137    }
138
139    /**
140     * Creates the {@link ModelCamelContext} using the given registry
141     *
142     * @param registry the registry
143     */
144    public LightweightCamelContext(Registry registry) {
145        this();
146
147        getCamelContextExtension().setRegistry(registry);
148    }
149
150    @Override
151    public boolean isStarted() {
152        return delegate.isStarted();
153    }
154
155    @Override
156    public boolean isStarting() {
157        return delegate.isStarting();
158    }
159
160    @Override
161    public boolean isStopped() {
162        return delegate.isStopped();
163    }
164
165    @Override
166    public boolean isStopping() {
167        return delegate.isStopping();
168    }
169
170    @Override
171    public boolean isSuspended() {
172        return delegate.isSuspended();
173    }
174
175    @Override
176    public boolean isRunAllowed() {
177        return delegate.isRunAllowed();
178    }
179
180    @Override
181    public boolean isSuspending() {
182        return delegate.isSuspending();
183    }
184
185    @Override
186    public void build() {
187        delegate.build();
188    }
189
190    @Override
191    public void suspend() {
192        delegate.suspend();
193    }
194
195    @Override
196    public void resume() {
197        delegate.resume();
198    }
199
200    @Override
201    public void shutdown() {
202        delegate.shutdown();
203    }
204
205    @Override
206    public void close() throws Exception {
207        delegate.close();
208    }
209
210    @Override
211    public <T> T getExtension(Class<T> type) {
212        return delegate.getExtension(type);
213    }
214
215    @Override
216    public <T> void setExtension(Class<T> type, T module) {
217        delegate.setExtension(type, module);
218    }
219
220    @Override
221    public void start() {
222        delegate.start();
223    }
224
225    @Override
226    public void stop() {
227        delegate.stop();
228    }
229
230    @Override
231    public boolean isVetoStarted() {
232        return delegate.isVetoStarted();
233    }
234
235    @Override
236    public String getName() {
237        return delegate.getName();
238    }
239
240    @Override
241    public CamelContextNameStrategy getNameStrategy() {
242        return delegate.getNameStrategy();
243    }
244
245    @Override
246    public void setNameStrategy(CamelContextNameStrategy nameStrategy) {
247        delegate.setNameStrategy(nameStrategy);
248    }
249
250    @Override
251    public String getDescription() {
252        return delegate.getDescription();
253    }
254
255    @Override
256    public ManagementNameStrategy getManagementNameStrategy() {
257        return delegate.getManagementNameStrategy();
258    }
259
260    @Override
261    public void setManagementNameStrategy(ManagementNameStrategy nameStrategy) {
262        delegate.setManagementNameStrategy(nameStrategy);
263    }
264
265    @Override
266    public String getManagementName() {
267        return delegate.getManagementName();
268    }
269
270    @Override
271    public void setManagementName(String name) {
272        delegate.setManagementName(name);
273    }
274
275    @Override
276    public String getVersion() {
277        return delegate.getVersion();
278    }
279
280    @Override
281    public ServiceStatus getStatus() {
282        return delegate.getStatus();
283    }
284
285    @Override
286    public String getUptime() {
287        return delegate.getUptime();
288    }
289
290    @Override
291    public long getUptimeMillis() {
292        return delegate.getUptimeMillis();
293    }
294
295    @Override
296    public Date getStartDate() {
297        return delegate.getStartDate();
298    }
299
300    @Override
301    public void addService(Object object) throws Exception {
302        delegate.addService(object);
303    }
304
305    @Override
306    public void addService(Object object, boolean stopOnShutdown) throws Exception {
307        delegate.addService(object, stopOnShutdown);
308    }
309
310    @Override
311    public void addService(Object object, boolean stopOnShutdown, boolean forceStart) throws Exception {
312        delegate.addService(object, stopOnShutdown, forceStart);
313    }
314
315    @Override
316    public void addPrototypeService(Object object) throws Exception {
317        delegate.addPrototypeService(object);
318    }
319
320    @Override
321    public boolean removeService(Object object) throws Exception {
322        return delegate.removeService(object);
323    }
324
325    @Override
326    public boolean hasService(Object object) {
327        return delegate.hasService(object);
328    }
329
330    @Override
331    public <T> T hasService(Class<T> type) {
332        return delegate.hasService(type);
333    }
334
335    @Override
336    public <T> Set<T> hasServices(Class<T> type) {
337        return delegate.hasServices(type);
338    }
339
340    @Override
341    public void deferStartService(Object object, boolean stopOnShutdown) throws Exception {
342        delegate.deferStartService(object, stopOnShutdown);
343    }
344
345    @Override
346    public void addStartupListener(StartupListener listener) throws Exception {
347        delegate.addStartupListener(listener);
348    }
349
350    @Override
351    public void addComponent(String componentName, Component component) {
352        delegate.addComponent(componentName, component);
353    }
354
355    @Override
356    public Component hasComponent(String componentName) {
357        return delegate.hasComponent(componentName);
358    }
359
360    @Override
361    public Component getComponent(String componentName) {
362        return delegate.getComponent(componentName);
363    }
364
365    @Override
366    public Component getComponent(String name, boolean autoCreateComponents) {
367        return delegate.getComponent(name, autoCreateComponents);
368    }
369
370    @Override
371    public Component getComponent(String name, boolean autoCreateComponents, boolean autoStart) {
372        return delegate.getComponent(name, autoCreateComponents, autoStart);
373    }
374
375    @Override
376    public <T extends Component> T getComponent(String name, Class<T> componentType) {
377        return delegate.getComponent(name, componentType);
378    }
379
380    @Override
381    public Set<String> getComponentNames() {
382        return delegate.getComponentNames();
383    }
384
385    @Override
386    public Component removeComponent(String componentName) {
387        return delegate.removeComponent(componentName);
388    }
389
390    @Override
391    public EndpointRegistry<? extends ValueHolder<String>> getEndpointRegistry() {
392        return delegate.getEndpointRegistry();
393    }
394
395    @Override
396    public Endpoint getEndpoint(String uri) {
397        return delegate.getEndpoint(uri);
398    }
399
400    @Override
401    public Endpoint getEndpoint(String uri, Map<String, Object> parameters) {
402        return delegate.getEndpoint(uri, parameters);
403    }
404
405    @Override
406    public <T extends Endpoint> T getEndpoint(String name, Class<T> endpointType) {
407        return delegate.getEndpoint(name, endpointType);
408    }
409
410    @Override
411    public Collection<Endpoint> getEndpoints() {
412        return delegate.getEndpoints();
413    }
414
415    @Override
416    public Endpoint hasEndpoint(String uri) {
417        return delegate.hasEndpoint(uri);
418    }
419
420    @Override
421    public Endpoint addEndpoint(String uri, Endpoint endpoint) throws Exception {
422        return delegate.addEndpoint(uri, endpoint);
423    }
424
425    @Override
426    public void removeEndpoint(Endpoint endpoint) throws Exception {
427        delegate.removeEndpoint(endpoint);
428    }
429
430    @Override
431    public Collection<Endpoint> removeEndpoints(String pattern) throws Exception {
432        return delegate.removeEndpoints(pattern);
433    }
434
435    @Override
436    public GlobalEndpointConfiguration getGlobalEndpointConfiguration() {
437        return delegate.getGlobalEndpointConfiguration();
438    }
439
440    @Override
441    public void setRouteController(RouteController routeController) {
442        delegate.setRouteController(routeController);
443    }
444
445    @Override
446    public RouteController getRouteController() {
447        return delegate.getRouteController();
448    }
449
450    @Override
451    public List<Route> getRoutes() {
452        return delegate.getRoutes();
453    }
454
455    @Override
456    public int getRoutesSize() {
457        return delegate.getRoutesSize();
458    }
459
460    @Override
461    public Route getRoute(String id) {
462        return delegate.getRoute(id);
463    }
464
465    @Override
466    public Processor getProcessor(String id) {
467        return delegate.getProcessor(id);
468    }
469
470    @Override
471    public <T extends Processor> T getProcessor(String id, Class<T> type) {
472        return delegate.getProcessor(id, type);
473    }
474
475    @Override
476    public void addRoutes(RoutesBuilder builder) throws Exception {
477        delegate.addRoutes(builder);
478    }
479
480    @Override
481    public void addTemplatedRoutes(RoutesBuilder builder) throws Exception {
482        delegate.addTemplatedRoutes(builder);
483    }
484
485    @Override
486    public void addRoutesConfigurations(RouteConfigurationsBuilder builder) throws Exception {
487        delegate.addRoutesConfigurations(builder);
488    }
489
490    @Override
491    public boolean removeRoute(String routeId) throws Exception {
492        return delegate.removeRoute(routeId);
493    }
494
495    @Override
496    public void addRoutePolicyFactory(RoutePolicyFactory routePolicyFactory) {
497        delegate.addRoutePolicyFactory(routePolicyFactory);
498    }
499
500    @Override
501    public List<RoutePolicyFactory> getRoutePolicyFactories() {
502        return delegate.getRoutePolicyFactories();
503    }
504
505    @Override
506    public void setRestConfiguration(RestConfiguration restConfiguration) {
507        delegate.setRestConfiguration(restConfiguration);
508    }
509
510    @Override
511    public RestConfiguration getRestConfiguration() {
512        return delegate.getRestConfiguration();
513    }
514
515    @Override
516    public void setVaultConfiguration(VaultConfiguration vaultConfiguration) {
517        delegate.setVaultConfiguration(vaultConfiguration);
518    }
519
520    @Override
521    public VaultConfiguration getVaultConfiguration() {
522        return delegate.getVaultConfiguration();
523    }
524
525    @Override
526    public RestRegistry getRestRegistry() {
527        return delegate.getRestRegistry();
528    }
529
530    @Override
531    public void setRestRegistry(RestRegistry restRegistry) {
532        delegate.setRestRegistry(restRegistry);
533    }
534
535    @Override
536    public TypeConverter getTypeConverter() {
537        return delegate.getTypeConverter();
538    }
539
540    @Override
541    public TypeConverterRegistry getTypeConverterRegistry() {
542        return delegate.getTypeConverterRegistry();
543    }
544
545    @Override
546    public void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) {
547        delegate.setTypeConverterRegistry(typeConverterRegistry);
548    }
549
550    @Override
551    public Registry getRegistry() {
552        return delegate.getRegistry();
553    }
554
555    @Override
556    public <T> T getRegistry(Class<T> type) {
557        return delegate.getRegistry(type);
558    }
559
560    @Override
561    public Injector getInjector() {
562        return delegate.getInjector();
563    }
564
565    @Override
566    public void setInjector(Injector injector) {
567        delegate.setInjector(injector);
568    }
569
570    @Override
571    public List<LifecycleStrategy> getLifecycleStrategies() {
572        return delegate.getLifecycleStrategies();
573    }
574
575    @Override
576    public void addLifecycleStrategy(LifecycleStrategy lifecycleStrategy) {
577        delegate.addLifecycleStrategy(lifecycleStrategy);
578    }
579
580    @Override
581    public Language resolveLanguage(String language) throws NoSuchLanguageException {
582        return delegate.resolveLanguage(language);
583    }
584
585    @Override
586    public String resolvePropertyPlaceholders(String text) {
587        return delegate.resolvePropertyPlaceholders(text);
588    }
589
590    @Override
591    public PropertiesComponent getPropertiesComponent() {
592        return delegate.getPropertiesComponent();
593    }
594
595    @Override
596    public void setPropertiesComponent(PropertiesComponent propertiesComponent) {
597        delegate.setPropertiesComponent(propertiesComponent);
598    }
599
600    @Override
601    public Set<String> getLanguageNames() {
602        return delegate.getLanguageNames();
603    }
604
605    @Override
606    public ProducerTemplate createProducerTemplate() {
607        return delegate.createProducerTemplate();
608    }
609
610    @Override
611    public ProducerTemplate createProducerTemplate(int maximumCacheSize) {
612        return delegate.createProducerTemplate(maximumCacheSize);
613    }
614
615    @Override
616    public FluentProducerTemplate createFluentProducerTemplate() {
617        return delegate.createFluentProducerTemplate();
618    }
619
620    @Override
621    public FluentProducerTemplate createFluentProducerTemplate(int maximumCacheSize) {
622        return delegate.createFluentProducerTemplate(maximumCacheSize);
623    }
624
625    @Override
626    public ConsumerTemplate createConsumerTemplate() {
627        return delegate.createConsumerTemplate();
628    }
629
630    @Override
631    public ConsumerTemplate createConsumerTemplate(int maximumCacheSize) {
632        return delegate.createConsumerTemplate(maximumCacheSize);
633    }
634
635    @Override
636    public DataFormat resolveDataFormat(String name) {
637        return delegate.resolveDataFormat(name);
638    }
639
640    @Override
641    public DataFormat createDataFormat(String name) {
642        return delegate.createDataFormat(name);
643    }
644
645    @Override
646    public Set<String> getDataFormatNames() {
647        return delegate.getDataFormatNames();
648    }
649
650    @Override
651    public Transformer resolveTransformer(String model) {
652        return delegate.resolveTransformer(model);
653    }
654
655    @Override
656    public Transformer resolveTransformer(DataType from, DataType to) {
657        return delegate.resolveTransformer(from, to);
658    }
659
660    @Override
661    public TransformerRegistry getTransformerRegistry() {
662        return delegate.getTransformerRegistry();
663    }
664
665    @Override
666    public Validator resolveValidator(DataType type) {
667        return delegate.resolveValidator(type);
668    }
669
670    @Override
671    public ValidatorRegistry getValidatorRegistry() {
672        return delegate.getValidatorRegistry();
673    }
674
675    @Override
676    public void setGlobalOptions(Map<String, String> globalOptions) {
677        delegate.setGlobalOptions(globalOptions);
678    }
679
680    @Override
681    public Map<String, String> getGlobalOptions() {
682        return delegate.getGlobalOptions();
683    }
684
685    @Override
686    public String getGlobalOption(String key) {
687        return delegate.getGlobalOption(key);
688    }
689
690    @Override
691    public ClassResolver getClassResolver() {
692        return delegate.getClassResolver();
693    }
694
695    @Override
696    public void setClassResolver(ClassResolver resolver) {
697        delegate.setClassResolver(resolver);
698    }
699
700    @Override
701    public ManagementStrategy getManagementStrategy() {
702        return delegate.getManagementStrategy();
703    }
704
705    @Override
706    public void setManagementStrategy(ManagementStrategy strategy) {
707        delegate.setManagementStrategy(strategy);
708    }
709
710    @Override
711    public void disableJMX() throws IllegalStateException {
712        delegate.disableJMX();
713    }
714
715    @Override
716    public InflightRepository getInflightRepository() {
717        return delegate.getInflightRepository();
718    }
719
720    @Override
721    public void setInflightRepository(InflightRepository repository) {
722        delegate.setInflightRepository(repository);
723    }
724
725    @Override
726    public ClassLoader getApplicationContextClassLoader() {
727        return delegate.getApplicationContextClassLoader();
728    }
729
730    @Override
731    public void setApplicationContextClassLoader(ClassLoader classLoader) {
732        delegate.setApplicationContextClassLoader(classLoader);
733    }
734
735    @Override
736    public ShutdownStrategy getShutdownStrategy() {
737        return delegate.getShutdownStrategy();
738    }
739
740    @Override
741    public void setShutdownStrategy(ShutdownStrategy shutdownStrategy) {
742        delegate.setShutdownStrategy(shutdownStrategy);
743    }
744
745    @Override
746    public ExecutorServiceManager getExecutorServiceManager() {
747        return delegate.getExecutorServiceManager();
748    }
749
750    @Override
751    public void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
752        delegate.setExecutorServiceManager(executorServiceManager);
753    }
754
755    @Override
756    public MessageHistoryFactory getMessageHistoryFactory() {
757        return delegate.getMessageHistoryFactory();
758    }
759
760    @Override
761    public void setMessageHistoryFactory(MessageHistoryFactory messageHistoryFactory) {
762        delegate.setMessageHistoryFactory(messageHistoryFactory);
763    }
764
765    @Override
766    public Debugger getDebugger() {
767        return delegate.getDebugger();
768    }
769
770    @Override
771    public void setDebugger(Debugger debugger) {
772        delegate.setDebugger(debugger);
773    }
774
775    @Override
776    public Tracer getTracer() {
777        return delegate.getTracer();
778    }
779
780    @Override
781    public void setTracer(Tracer tracer) {
782        delegate.setTracer(tracer);
783    }
784
785    @Override
786    public void setTracingStandby(boolean tracingStandby) {
787        delegate.setTracingStandby(tracingStandby);
788    }
789
790    @Override
791    public boolean isTracingStandby() {
792        return delegate.isTracingStandby();
793    }
794
795    @Override
796    public void setBacklogTracingStandby(boolean backlogTracingStandby) {
797        delegate.setBacklogTracingStandby(backlogTracingStandby);
798    }
799
800    @Override
801    public boolean isBacklogTracingStandby() {
802        return delegate.isBacklogTracingStandby();
803    }
804
805    @Override
806    public UuidGenerator getUuidGenerator() {
807        return delegate.getUuidGenerator();
808    }
809
810    @Override
811    public void setUuidGenerator(UuidGenerator uuidGenerator) {
812        delegate.setUuidGenerator(uuidGenerator);
813    }
814
815    @Override
816    public Boolean isLoadTypeConverters() {
817        return delegate.isLoadTypeConverters();
818    }
819
820    @Override
821    public void setLoadTypeConverters(Boolean loadTypeConverters) {
822        delegate.setLoadTypeConverters(loadTypeConverters);
823    }
824
825    @Override
826    public Boolean isTypeConverterStatisticsEnabled() {
827        return delegate.isTypeConverterStatisticsEnabled();
828    }
829
830    @Override
831    public void setTypeConverterStatisticsEnabled(Boolean typeConverterStatisticsEnabled) {
832        delegate.setTypeConverterStatisticsEnabled(typeConverterStatisticsEnabled);
833    }
834
835    @Override
836    public Boolean isLoadHealthChecks() {
837        return delegate.isLoadHealthChecks();
838    }
839
840    @Override
841    public void setLoadHealthChecks(Boolean loadHealthChecks) {
842        delegate.setLoadHealthChecks(loadHealthChecks);
843    }
844
845    @Override
846    public Boolean isSourceLocationEnabled() {
847        return delegate.isSourceLocationEnabled();
848    }
849
850    @Override
851    public void setSourceLocationEnabled(Boolean sourceLocationEnabled) {
852        delegate.setSourceLocationEnabled(sourceLocationEnabled);
853    }
854
855    @Override
856    public Boolean isModeline() {
857        return delegate.isModeline();
858    }
859
860    @Override
861    public void setModeline(Boolean modeline) {
862        delegate.setModeline(modeline);
863    }
864
865    @Override
866    public Boolean isDevConsole() {
867        return delegate.isDevConsole();
868    }
869
870    @Override
871    public void setDevConsole(Boolean loadDevConsoles) {
872        delegate.setDevConsole(loadDevConsoles);
873    }
874
875    @Override
876    public Boolean isDumpRoutes() {
877        return delegate.isDumpRoutes();
878    }
879
880    @Override
881    public void setDumpRoutes(Boolean dumpRoutes) {
882        delegate.setDumpRoutes(dumpRoutes);
883    }
884
885    @Override
886    public Boolean isUseMDCLogging() {
887        return delegate.isUseMDCLogging();
888    }
889
890    @Override
891    public void setUseMDCLogging(Boolean useMDCLogging) {
892        delegate.setUseMDCLogging(useMDCLogging);
893    }
894
895    @Override
896    public String getMDCLoggingKeysPattern() {
897        return delegate.getMDCLoggingKeysPattern();
898    }
899
900    @Override
901    public void setMDCLoggingKeysPattern(String pattern) {
902        delegate.setMDCLoggingKeysPattern(pattern);
903    }
904
905    @Override
906    public Boolean isUseDataType() {
907        return delegate.isUseDataType();
908    }
909
910    @Override
911    public void setUseDataType(Boolean useDataType) {
912        delegate.setUseDataType(useDataType);
913    }
914
915    @Override
916    public Boolean isUseBreadcrumb() {
917        return delegate.isUseBreadcrumb();
918    }
919
920    @Override
921    public void setUseBreadcrumb(Boolean useBreadcrumb) {
922        delegate.setUseBreadcrumb(useBreadcrumb);
923    }
924
925    @Override
926    public StreamCachingStrategy getStreamCachingStrategy() {
927        return delegate.getStreamCachingStrategy();
928    }
929
930    @Override
931    public void setStreamCachingStrategy(StreamCachingStrategy streamCachingStrategy) {
932        delegate.setStreamCachingStrategy(streamCachingStrategy);
933    }
934
935    @Override
936    public RuntimeEndpointRegistry getRuntimeEndpointRegistry() {
937        return delegate.getRuntimeEndpointRegistry();
938    }
939
940    @Override
941    public void setRuntimeEndpointRegistry(RuntimeEndpointRegistry runtimeEndpointRegistry) {
942        delegate.setRuntimeEndpointRegistry(runtimeEndpointRegistry);
943    }
944
945    @Override
946    public void setSSLContextParameters(SSLContextParameters sslContextParameters) {
947        delegate.setSSLContextParameters(sslContextParameters);
948    }
949
950    @Override
951    public SSLContextParameters getSSLContextParameters() {
952        return delegate.getSSLContextParameters();
953    }
954
955    @Override
956    public void setStartupSummaryLevel(StartupSummaryLevel startupSummaryLevel) {
957        delegate.setStartupSummaryLevel(startupSummaryLevel);
958    }
959
960    @Override
961    public StartupSummaryLevel getStartupSummaryLevel() {
962        return delegate.getStartupSummaryLevel();
963    }
964
965    @Override
966    public void setStreamCaching(Boolean cache) {
967        delegate.setStreamCaching(cache);
968    }
969
970    @Override
971    public Boolean isStreamCaching() {
972        return delegate.isStreamCaching();
973    }
974
975    @Override
976    public void setTracing(Boolean tracing) {
977        delegate.setTracing(tracing);
978    }
979
980    @Override
981    public Boolean isTracing() {
982        return delegate.isTracing();
983    }
984
985    @Override
986    public String getTracingPattern() {
987        return delegate.getTracingPattern();
988    }
989
990    @Override
991    public void setTracingPattern(String tracePattern) {
992        delegate.setTracingPattern(tracePattern);
993    }
994
995    @Override
996    public String getTracingLoggingFormat() {
997        return delegate.getTracingLoggingFormat();
998    }
999
1000    @Override
1001    public void setTracingLoggingFormat(String format) {
1002        delegate.setTracingLoggingFormat(format);
1003    }
1004
1005    @Override
1006    public void setBacklogTracing(Boolean backlogTrace) {
1007        delegate.setBacklogTracing(backlogTrace);
1008    }
1009
1010    @Override
1011    public Boolean isBacklogTracing() {
1012        return delegate.isBacklogTracing();
1013    }
1014
1015    @Override
1016    public void setDebugging(Boolean debugging) {
1017        delegate.setDebugging(debugging);
1018    }
1019
1020    @Override
1021    public Boolean isDebugging() {
1022        return delegate.isDebugging();
1023    }
1024
1025    @Override
1026    public void setMessageHistory(Boolean messageHistory) {
1027        delegate.setMessageHistory(messageHistory);
1028    }
1029
1030    @Override
1031    public Boolean isMessageHistory() {
1032        return delegate.isMessageHistory();
1033    }
1034
1035    @Override
1036    public void setLogMask(Boolean logMask) {
1037        delegate.setLogMask(logMask);
1038    }
1039
1040    @Override
1041    public Boolean isLogMask() {
1042        return delegate.isLogMask();
1043    }
1044
1045    @Override
1046    public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
1047        delegate.setLogExhaustedMessageBody(logExhaustedMessageBody);
1048    }
1049
1050    @Override
1051    public Boolean isLogExhaustedMessageBody() {
1052        return delegate.isLogExhaustedMessageBody();
1053    }
1054
1055    @Override
1056    public void setDelayer(Long delay) {
1057        delegate.setDelayer(delay);
1058    }
1059
1060    @Override
1061    public Long getDelayer() {
1062        return delegate.getDelayer();
1063    }
1064
1065    @Override
1066    public void setAutoStartup(Boolean autoStartup) {
1067        delegate.setAutoStartup(autoStartup);
1068    }
1069
1070    @Override
1071    public Boolean isAutoStartup() {
1072        return delegate.isAutoStartup();
1073    }
1074
1075    @Override
1076    public void setShutdownRoute(ShutdownRoute shutdownRoute) {
1077        delegate.setShutdownRoute(shutdownRoute);
1078    }
1079
1080    @Override
1081    public ShutdownRoute getShutdownRoute() {
1082        return delegate.getShutdownRoute();
1083    }
1084
1085    @Override
1086    public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
1087        delegate.setShutdownRunningTask(shutdownRunningTask);
1088    }
1089
1090    @Override
1091    public ShutdownRunningTask getShutdownRunningTask() {
1092        return delegate.getShutdownRunningTask();
1093    }
1094
1095    @Override
1096    public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
1097        delegate.setAllowUseOriginalMessage(allowUseOriginalMessage);
1098    }
1099
1100    @Override
1101    public Boolean isAllowUseOriginalMessage() {
1102        return delegate.isAllowUseOriginalMessage();
1103    }
1104
1105    @Override
1106    public Boolean isCaseInsensitiveHeaders() {
1107        return delegate.isCaseInsensitiveHeaders();
1108    }
1109
1110    @Override
1111    public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
1112        delegate.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
1113    }
1114
1115    @Override
1116    public Boolean isAutowiredEnabled() {
1117        return delegate.isAutowiredEnabled();
1118    }
1119
1120    @Override
1121    public void setAutowiredEnabled(Boolean autowiredEnabled) {
1122        delegate.setAutowiredEnabled(autowiredEnabled);
1123    }
1124
1125    @Override
1126    public void removeRouteTemplates(String pattern) throws Exception {
1127        delegate.removeRouteTemplates(pattern);
1128    }
1129
1130    @Override
1131    public ExtendedCamelContext getCamelContextExtension() {
1132        return delegate.getCamelContextExtension();
1133    }
1134
1135    //
1136    // CatalogCamelContext
1137    //
1138
1139    protected CatalogCamelContext getCatalogCamelContext() {
1140        return (CatalogCamelContext) delegate;
1141    }
1142
1143    @Override
1144    public String getComponentParameterJsonSchema(String componentName) throws IOException {
1145        return getCatalogCamelContext().getComponentParameterJsonSchema(componentName);
1146    }
1147
1148    @Override
1149    public String getDataFormatParameterJsonSchema(String dataFormatName) throws IOException {
1150        return getCatalogCamelContext().getDataFormatParameterJsonSchema(dataFormatName);
1151    }
1152
1153    @Override
1154    public String getLanguageParameterJsonSchema(String languageName) throws IOException {
1155        return getCatalogCamelContext().getLanguageParameterJsonSchema(languageName);
1156    }
1157
1158    @Override
1159    public String getEipParameterJsonSchema(String eipName) throws IOException {
1160        return getCatalogCamelContext().getEipParameterJsonSchema(eipName);
1161    }
1162
1163    //
1164    // ModelCamelContext
1165    //
1166
1167    protected ModelCamelContext getModelCamelContext() {
1168        return (ModelCamelContext) delegate;
1169    }
1170
1171    @Override
1172    public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
1173        getModelCamelContext().addModelLifecycleStrategy(modelLifecycleStrategy);
1174    }
1175
1176    @Override
1177    public List<ModelLifecycleStrategy> getModelLifecycleStrategies() {
1178        return getModelCamelContext().getModelLifecycleStrategies();
1179    }
1180
1181    @Override
1182    public void addRouteConfiguration(RouteConfigurationDefinition routesConfiguration) {
1183        getModelCamelContext().addRouteConfiguration(routesConfiguration);
1184    }
1185
1186    @Override
1187    public void addRouteConfigurations(List<RouteConfigurationDefinition> routesConfigurations) {
1188        getModelCamelContext().addRouteConfigurations(routesConfigurations);
1189    }
1190
1191    @Override
1192    public List<RouteConfigurationDefinition> getRouteConfigurationDefinitions() {
1193        return getModelCamelContext().getRouteConfigurationDefinitions();
1194    }
1195
1196    @Override
1197    public void removeRouteConfiguration(RouteConfigurationDefinition routeConfigurationDefinition) throws Exception {
1198        getModelCamelContext().removeRouteConfiguration(routeConfigurationDefinition);
1199    }
1200
1201    @Override
1202    public RouteConfigurationDefinition getRouteConfigurationDefinition(String id) {
1203        return getModelCamelContext().getRouteConfigurationDefinition(id);
1204    }
1205
1206    @Override
1207    public List<RouteDefinition> getRouteDefinitions() {
1208        return getModelCamelContext().getRouteDefinitions();
1209    }
1210
1211    @Override
1212    public RouteDefinition getRouteDefinition(String id) {
1213        return getModelCamelContext().getRouteDefinition(id);
1214    }
1215
1216    @Override
1217    public void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
1218        getModelCamelContext().addRouteDefinitions(routeDefinitions);
1219    }
1220
1221    @Override
1222    public void addRouteDefinition(RouteDefinition routeDefinition) throws Exception {
1223        getModelCamelContext().addRouteDefinition(routeDefinition);
1224    }
1225
1226    @Override
1227    public void removeRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
1228        getModelCamelContext().removeRouteDefinitions(routeDefinitions);
1229    }
1230
1231    @Override
1232    public void removeRouteDefinition(RouteDefinition routeDefinition) throws Exception {
1233        getModelCamelContext().removeRouteDefinition(routeDefinition);
1234    }
1235
1236    @Override
1237    public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
1238        return getModelCamelContext().getRouteTemplateDefinitions();
1239    }
1240
1241    @Override
1242    public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
1243        return getModelCamelContext().getRouteTemplateDefinition(id);
1244    }
1245
1246    @Override
1247    public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
1248        getModelCamelContext().addRouteTemplateDefinitions(routeTemplateDefinitions);
1249    }
1250
1251    @Override
1252    public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
1253        getModelCamelContext().addRouteTemplateDefinition(routeTemplateDefinition);
1254    }
1255
1256    @Override
1257    public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
1258        getModelCamelContext().removeRouteTemplateDefinitions(routeTemplateDefinitions);
1259    }
1260
1261    @Override
1262    public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
1263        getModelCamelContext().removeRouteTemplateDefinition(routeTemplateDefinition);
1264    }
1265
1266    @Override
1267    public void addRouteTemplateDefinitionConverter(String templateIdPattern, RouteTemplateDefinition.Converter converter) {
1268        getModelCamelContext().addRouteTemplateDefinitionConverter(templateIdPattern, converter);
1269    }
1270
1271    @Override
1272    public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
1273            throws Exception {
1274        return getModelCamelContext().addRouteFromTemplate(routeId, routeTemplateId, parameters);
1275    }
1276
1277    @Override
1278    public String addRouteFromTemplate(String routeId, String routeTemplateId, String prefixId, Map<String, Object> parameters)
1279            throws Exception {
1280        return getModelCamelContext().addRouteFromTemplate(routeId, routeTemplateId, prefixId, parameters);
1281    }
1282
1283    @Override
1284    public String addRouteFromTemplate(String routeId, String routeTemplateId, RouteTemplateContext routeTemplateContext)
1285            throws Exception {
1286        return getModelCamelContext().addRouteFromTemplate(routeId, routeTemplateId, routeTemplateContext);
1287    }
1288
1289    @Override
1290    public String addRouteFromTemplate(
1291            String routeId, String routeTemplateId, String prefixId, RouteTemplateContext routeTemplateContext)
1292            throws Exception {
1293        return getModelCamelContext().addRouteFromTemplate(routeId, routeTemplateId, prefixId, routeTemplateContext);
1294    }
1295
1296    @Override
1297    public void addRouteFromTemplatedRoute(TemplatedRouteDefinition templatedRouteDefinition)
1298            throws Exception {
1299        getModelCamelContext().addRouteFromTemplatedRoute(templatedRouteDefinition);
1300    }
1301
1302    @Override
1303    public void removeRouteTemplateDefinitions(String pattern) throws Exception {
1304        getModelCamelContext().removeRouteTemplateDefinitions(pattern);
1305    }
1306
1307    @Override
1308    public List<RestDefinition> getRestDefinitions() {
1309        return getModelCamelContext().getRestDefinitions();
1310    }
1311
1312    @Override
1313    public void addRestDefinitions(Collection<RestDefinition> restDefinitions, boolean addToRoutes) throws Exception {
1314        getModelCamelContext().addRestDefinitions(restDefinitions, addToRoutes);
1315    }
1316
1317    @Override
1318    public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
1319        getModelCamelContext().setDataFormats(dataFormats);
1320    }
1321
1322    @Override
1323    public Map<String, DataFormatDefinition> getDataFormats() {
1324        return getModelCamelContext().getDataFormats();
1325    }
1326
1327    @Override
1328    public DataFormatDefinition resolveDataFormatDefinition(String name) {
1329        return getModelCamelContext().resolveDataFormatDefinition(name);
1330    }
1331
1332    @Override
1333    public ProcessorDefinition<?> getProcessorDefinition(String id) {
1334        return getModelCamelContext().getProcessorDefinition(id);
1335    }
1336
1337    @Override
1338    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
1339        return getModelCamelContext().getProcessorDefinition(id, type);
1340    }
1341
1342    @Override
1343    public void setValidators(List<ValidatorDefinition> validators) {
1344        getModelCamelContext().setValidators(validators);
1345    }
1346
1347    @Override
1348    public Resilience4jConfigurationDefinition getResilience4jConfiguration(String id) {
1349        return getModelCamelContext().getResilience4jConfiguration(id);
1350    }
1351
1352    @Override
1353    public void setResilience4jConfiguration(Resilience4jConfigurationDefinition configuration) {
1354        getModelCamelContext().setResilience4jConfiguration(configuration);
1355    }
1356
1357    @Override
1358    public void setResilience4jConfigurations(List<Resilience4jConfigurationDefinition> configurations) {
1359        getModelCamelContext().setResilience4jConfigurations(configurations);
1360    }
1361
1362    @Override
1363    public void addResilience4jConfiguration(String id, Resilience4jConfigurationDefinition configuration) {
1364        getModelCamelContext().addResilience4jConfiguration(id, configuration);
1365    }
1366
1367    @Override
1368    public FaultToleranceConfigurationDefinition getFaultToleranceConfiguration(String id) {
1369        return getModelCamelContext().getFaultToleranceConfiguration(id);
1370    }
1371
1372    @Override
1373    public void setFaultToleranceConfiguration(FaultToleranceConfigurationDefinition configuration) {
1374        getModelCamelContext().setFaultToleranceConfiguration(configuration);
1375    }
1376
1377    @Override
1378    public void setFaultToleranceConfigurations(List<FaultToleranceConfigurationDefinition> configurations) {
1379        getModelCamelContext().setFaultToleranceConfigurations(configurations);
1380    }
1381
1382    @Override
1383    public void addFaultToleranceConfiguration(String id, FaultToleranceConfigurationDefinition configuration) {
1384        getModelCamelContext().addFaultToleranceConfiguration(id, configuration);
1385    }
1386
1387    @Override
1388    public List<ValidatorDefinition> getValidators() {
1389        return getModelCamelContext().getValidators();
1390    }
1391
1392    @Override
1393    public void setTransformers(List<TransformerDefinition> transformers) {
1394        getModelCamelContext().setTransformers(transformers);
1395    }
1396
1397    @Override
1398    public List<TransformerDefinition> getTransformers() {
1399        return getModelCamelContext().getTransformers();
1400    }
1401
1402    @Override
1403    public ServiceCallConfigurationDefinition getServiceCallConfiguration(String serviceName) {
1404        return getModelCamelContext().getServiceCallConfiguration(serviceName);
1405    }
1406
1407    @Override
1408    public void setServiceCallConfiguration(ServiceCallConfigurationDefinition configuration) {
1409        getModelCamelContext().setServiceCallConfiguration(configuration);
1410    }
1411
1412    @Override
1413    public void setServiceCallConfigurations(List<ServiceCallConfigurationDefinition> configurations) {
1414        getModelCamelContext().setServiceCallConfigurations(configurations);
1415    }
1416
1417    @Override
1418    public void addServiceCallConfiguration(String serviceName, ServiceCallConfigurationDefinition configuration) {
1419        getModelCamelContext().addServiceCallConfiguration(serviceName, configuration);
1420    }
1421
1422    @Override
1423    public void startRouteDefinitions() throws Exception {
1424        getModelCamelContext().startRouteDefinitions();
1425    }
1426
1427    @Override
1428    public void startRouteDefinitions(List<RouteDefinition> routeDefinitions) throws Exception {
1429        getModelCamelContext().startRouteDefinitions(routeDefinitions);
1430    }
1431
1432    @Override
1433    public void setRouteFilterPattern(String include, String exclude) {
1434        getModelCamelContext().setRouteFilterPattern(include, exclude);
1435    }
1436
1437    @Override
1438    public void setRouteFilter(Function<RouteDefinition, Boolean> filter) {
1439        getModelCamelContext().setRouteFilter(filter);
1440    }
1441
1442    @Override
1443    public Function<RouteDefinition, Boolean> getRouteFilter() {
1444        return getModelCamelContext().getRouteFilter();
1445    }
1446
1447    @Override
1448    public ModelReifierFactory getModelReifierFactory() {
1449        return getModelCamelContext().getModelReifierFactory();
1450    }
1451
1452    @Override
1453    public void setModelReifierFactory(ModelReifierFactory modelReifierFactory) {
1454        getModelCamelContext().setModelReifierFactory(modelReifierFactory);
1455    }
1456
1457    @Override
1458    public Expression createExpression(ExpressionDefinition definition) {
1459        return getModelCamelContext().createExpression(definition);
1460    }
1461
1462    @Override
1463    public Predicate createPredicate(ExpressionDefinition definition) {
1464        return getModelCamelContext().createPredicate(definition);
1465    }
1466
1467    @Override
1468    public void registerValidator(ValidatorDefinition validator) {
1469        getModelCamelContext().registerValidator(validator);
1470    }
1471
1472    @Override
1473    public void registerTransformer(TransformerDefinition transformer) {
1474        getModelCamelContext().registerTransformer(transformer);
1475    }
1476
1477    //
1478    // Immutable
1479    //
1480
1481    public void init() {
1482        if (delegate instanceof LightweightRuntimeCamelContext) {
1483            return;
1484        }
1485        delegate.init();
1486        for (Route route : delegate.getRoutes()) {
1487            route.clearRouteModel();
1488        }
1489        delegate = new LightweightRuntimeCamelContext(this, delegate);
1490    }
1491
1492    public void startImmutable() {
1493        delegate.start();
1494    }
1495
1496}