You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/02/08 08:56:10 UTC

[camel] branch master updated: Add startupstep for xml routes loader

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 28a1169  Add startupstep for xml routes loader
28a1169 is described below

commit 28a1169108ea8f36a6ef17410056cf1a4729842f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Feb 8 09:55:28 2021 +0100

    Add startupstep for xml routes loader
---
 .../camel/xml/in/XmlRoutesBuilderLoader.java       | 51 ++++++++++++++++------
 .../camel/xml/jaxb/JaxbXmlRoutesBuilderLoader.java | 51 ++++++++++++++++------
 2 files changed, 74 insertions(+), 28 deletions(-)

diff --git a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/XmlRoutesBuilderLoader.java b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/XmlRoutesBuilderLoader.java
index 3547736..9c29478 100644
--- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/XmlRoutesBuilderLoader.java
+++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/XmlRoutesBuilderLoader.java
@@ -18,12 +18,15 @@ package org.apache.camel.xml.in;
 
 import java.io.InputStream;
 
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
+import org.apache.camel.StartupStep;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.RoutesBuilderLoader;
+import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.RoutesBuilderLoaderSupport;
 
@@ -34,6 +37,14 @@ public class XmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
     public static final String EXTENSION = "xml";
     public static final String NAMESPACE = "http://camel.apache.org/schema/spring";
 
+    private StartupStepRecorder recorder;
+
+    @Override
+    protected void doBuild() throws Exception {
+        super.doBuild();
+        recorder = getCamelContext().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
+    }
+
     @ManagedAttribute(description = "Supported file extension")
     @Override
     public String getSupportedExtension() {
@@ -45,20 +56,32 @@ public class XmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRouteTemplatesDefinition()
-                            .ifPresent(this::setRouteTemplateCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRestsDefinition()
-                            .ifPresent(this::setRestCollection);
-                }
-                try (InputStream is = resource.getInputStream()) {
-                    new ModelParser(is, NAMESPACE)
-                            .parseRoutesDefinition()
-                            .ifPresent(this::setRouteCollection);
+                // we use configure to load the routes
+
+                StartupStep step = recorder != null
+                        ? recorder.beginStep(XmlRoutesBuilderLoader.class, resource.getLocation(),
+                                "Loading and Parsing XML routes")
+                        : null;
+                try {
+                    try (InputStream is = resource.getInputStream()) {
+                        new ModelParser(is, NAMESPACE)
+                                .parseRouteTemplatesDefinition()
+                                .ifPresent(this::setRouteTemplateCollection);
+                    }
+                    try (InputStream is = resource.getInputStream()) {
+                        new ModelParser(is, NAMESPACE)
+                                .parseRestsDefinition()
+                                .ifPresent(this::setRestCollection);
+                    }
+                    try (InputStream is = resource.getInputStream()) {
+                        new ModelParser(is, NAMESPACE)
+                                .parseRoutesDefinition()
+                                .ifPresent(this::setRouteCollection);
+                    }
+                } finally {
+                    if (recorder != null) {
+                        recorder.endStep(step);
+                    }
                 }
             }
         };
diff --git a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXmlRoutesBuilderLoader.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
index bf4f3a8..566a8e7 100644
--- a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
@@ -18,7 +18,9 @@ package org.apache.camel.xml.jaxb;
 
 import java.io.InputStream;
 
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
+import org.apache.camel.StartupStep;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
@@ -27,6 +29,7 @@ import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.RoutesBuilderLoader;
+import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.RoutesBuilderLoaderSupport;
 
@@ -38,6 +41,14 @@ public class JaxbXmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
 
     public static final String EXTENSION = "xml";
 
+    private StartupStepRecorder recorder;
+
+    @Override
+    protected void doBuild() throws Exception {
+        super.doBuild();
+        recorder = getCamelContext().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
+    }
+
     @ManagedAttribute(description = "Supported file extension")
     @Override
     public String getSupportedExtension() {
@@ -49,24 +60,36 @@ public class JaxbXmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                try (InputStream is = resource.getInputStream()) {
-                    RouteTemplatesDefinition templates = loadRouteTemplatesDefinition(getCamelContext(), is);
-                    if (templates != null) {
-                        setRouteTemplateCollection(templates);
+                // we use configure to load the routes
+
+                StartupStep step = recorder != null
+                        ? recorder.beginStep(JaxbXmlRoutesBuilderLoader.class, resource.getLocation(),
+                                "Loading and Parsing XML routes")
+                        : null;
+                try {
+                    try (InputStream is = resource.getInputStream()) {
+                        RouteTemplatesDefinition templates = loadRouteTemplatesDefinition(getCamelContext(), is);
+                        if (templates != null) {
+                            setRouteTemplateCollection(templates);
+                        }
                     }
-                }
 
-                try (InputStream is = resource.getInputStream()) {
-                    RestsDefinition rests = loadRestsDefinition(getCamelContext(), is);
-                    if (rests != null) {
-                        setRestCollection(rests);
+                    try (InputStream is = resource.getInputStream()) {
+                        RestsDefinition rests = loadRestsDefinition(getCamelContext(), is);
+                        if (rests != null) {
+                            setRestCollection(rests);
+                        }
                     }
-                }
 
-                try (InputStream is = resource.getInputStream()) {
-                    RoutesDefinition routes = loadRoutesDefinition(getCamelContext(), is);
-                    if (routes != null) {
-                        setRouteCollection(routes);
+                    try (InputStream is = resource.getInputStream()) {
+                        RoutesDefinition routes = loadRoutesDefinition(getCamelContext(), is);
+                        if (routes != null) {
+                            setRouteCollection(routes);
+                        }
+                    }
+                } finally {
+                    if (recorder != null) {
+                        recorder.endStep(step);
                     }
                 }
             }