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);