This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 1dd03bcbd64 CAMEL-20730: camel-jbang - Parse OSGi blueprint 
<camelContext> attributes
1dd03bcbd64 is described below

commit 1dd03bcbd64ff679736db2be71edc65217966fb7
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed May 1 19:40:25 2024 +0200

    CAMEL-20730: camel-jbang - Parse OSGi blueprint <camelContext> attributes
---
 .../xml/blueprint/BlueprintXmlBeansHandler.java    | 171 +++++++++++++++++++++
 1 file changed, 171 insertions(+)

diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
index f602562d492..e37db6baded 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
@@ -30,12 +30,21 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.ShutdownRoute;
+import org.apache.camel.ShutdownRunningTask;
+import org.apache.camel.StartupSummaryLevel;
+import org.apache.camel.TypeConverterExists;
+import org.apache.camel.converter.jaxp.XmlConverter;
 import org.apache.camel.main.MainConfigurationProperties;
 import org.apache.camel.main.util.XmlHelper;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.app.RegistryBeanDefinition;
+import org.apache.camel.model.errorhandler.RefErrorHandlerDefinition;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.ResourceLoader;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
@@ -82,6 +91,8 @@ public class BlueprintXmlBeansHandler {
                 // this is a camel bean via camel-xml-io-dsl
                 String fileName = StringHelper.afterLast(id, ":");
                 discoverBeans(camelContext, fileName, doc);
+                // configure <camelContext>
+                configureCamelContext(camelContext, fileName);
             }
         });
     }
@@ -222,6 +233,166 @@ public class BlueprintXmlBeansHandler {
         return answer;
     }
 
+    private void configureCamelContext(CamelContext camelContext, String 
fileName) {
+        Resource resource = 
camelContext.getCamelContextExtension().getContextPlugin(ResourceLoader.class)
+                .resolveResource("file:" + fileName);
+        if (!resource.exists()) {
+            return;
+        }
+
+        try {
+            // need to load and parse again as we need to load <camelContext> 
to configure CamelContext from XML
+            Document dom = new 
XmlConverter().toDOMDocument(resource.getInputStream(), null);
+            NodeList camels = 
dom.getElementsByTagNameNS("http://camel.apache.org/schema/blueprint";, 
"camelContext");
+            if (camels.getLength() == 1) {
+                Node n = camels.item(0);
+                if (n.hasAttributes()) {
+                    String value = XmlHelper.getAttribute(n, "id");
+                    if (value != null) {
+                        
camelContext.getCamelContextExtension().setName(CamelContextHelper.parseText(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "startupSummaryLevel");
+                    if (value != null) {
+                        camelContext
+                                .setStartupSummaryLevel(
+                                        CamelContextHelper.parse(camelContext, 
StartupSummaryLevel.class, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "trace");
+                    if (value != null) {
+                        
camelContext.setTracing(CamelContextHelper.parseBoolean(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "backlogTrace");
+                    if (value != null) {
+                        
camelContext.setBacklogTracing(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "tracePattern");
+                    if (value != null) {
+                        
camelContext.setTracingPattern(CamelContextHelper.parseText(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "traceLoggingFormat");
+                    if (value != null) {
+                        
camelContext.setTracingLoggingFormat(CamelContextHelper.parseText(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "debug");
+                    if (value != null) {
+                        
camelContext.setDebugging(CamelContextHelper.parseBoolean(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "messageHistory");
+                    if (value != null) {
+                        
camelContext.setMessageHistory(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "sourceLocationEnabled");
+                    if (value != null) {
+                        
camelContext.setSourceLocationEnabled(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "logMask");
+                    if (value != null) {
+                        
camelContext.setLogMask(CamelContextHelper.parseBoolean(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"logExhaustedMessageBody");
+                    if (value != null) {
+                        
camelContext.setLogExhaustedMessageBody(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "streamCache");
+                    if (value != null) {
+                        
camelContext.setStreamCaching(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "delayer");
+                    if (value != null) {
+                        
camelContext.setDelayer(CamelContextHelper.parseLong(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "autoStartup");
+                    if (value != null) {
+                        
camelContext.setAutoStartup(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "dumpRoutes");
+                    if (value != null) {
+                        
camelContext.setDumpRoutes(CamelContextHelper.parseText(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "useMDCLogging");
+                    if (value != null) {
+                        
camelContext.setUseMDCLogging(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "mdcLoggingKeysPattern");
+                    if (value != null) {
+                        
camelContext.setMDCLoggingKeysPattern(CamelContextHelper.parseText(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "useDataType");
+                    if (value != null) {
+                        
camelContext.setUseDataType(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "useBreadcrumb");
+                    if (value != null) {
+                        
camelContext.setUseBreadcrumb(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"allowUseOriginalMessage");
+                    if (value != null) {
+                        
camelContext.setAllowUseOriginalMessage(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"caseInsensitiveHeaders");
+                    if (value != null) {
+                        
camelContext.setCaseInsensitiveHeaders(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "autowiredEnabled");
+                    if (value != null) {
+                        
camelContext.setAutowiredEnabled(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, "threadNamePattern");
+                    if (value != null) {
+                        camelContext.getExecutorServiceManager()
+                                
.setThreadNamePattern(CamelContextHelper.parseText(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "shutdownRoute");
+                    if (value != null) {
+                        
camelContext.setShutdownRoute(CamelContextHelper.parse(camelContext, 
ShutdownRoute.class, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "shutdownRunningTask");
+                    if (value != null) {
+                        camelContext
+                                .setShutdownRunningTask(
+                                        CamelContextHelper.parse(camelContext, 
ShutdownRunningTask.class, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "shutdownRunningTask");
+                    if (value != null) {
+                        
camelContext.setLoadTypeConverters(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"typeConverterStatisticsEnabled");
+                    if (value != null) {
+                        
camelContext.setTypeConverterStatisticsEnabled(CamelContextHelper.parseBoolean(camelContext,
 value));
+                    }
+                    value = XmlHelper.getAttribute(n, "loadHealthChecks");
+                    if (value != null) {
+                        
camelContext.setLoadHealthChecks(CamelContextHelper.parseBoolean(camelContext, 
value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"inflightRepositoryBrowseEnabled");
+                    if (value != null) {
+                        camelContext.getInflightRepository()
+                                
.setInflightBrowseEnabled(CamelContextHelper.parseBoolean(camelContext, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "typeConverterExists");
+                    if (value != null) {
+                        camelContext.getTypeConverterRegistry()
+                                .setTypeConverterExists(
+                                        CamelContextHelper.parse(camelContext, 
TypeConverterExists.class, value));
+                    }
+                    value = XmlHelper.getAttribute(n, 
"typeConverterExistsLoggingLevel");
+                    if (value != null) {
+                        
camelContext.getTypeConverterRegistry().setTypeConverterExistsLoggingLevel(
+                                CamelContextHelper.parse(camelContext, 
LoggingLevel.class, value));
+                    }
+                    value = XmlHelper.getAttribute(n, "errorHandlerRef");
+                    if (value != null) {
+                        camelContext.getCamelContextExtension()
+                                .setErrorHandlerFactory(
+                                        new 
RefErrorHandlerDefinition(CamelContextHelper.parseText(camelContext, value)));
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw RuntimeCamelException.wrapRuntimeException(e);
+        }
+    }
+
     private void discoverBeans(CamelContext camelContext, String fileName, 
Document dom) {
         Resource resource = 
camelContext.getCamelContextExtension().getContextPlugin(ResourceLoader.class)
                 .resolveResource("file:" + fileName);

Reply via email to