You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2021/04/08 21:40:23 UTC

[camel] 03/04: dsl: adapt to latest RouteBuilder support

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

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

commit 4b9091eafe959f6bf5da6ad7679739440c8b2a39
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Thu Apr 8 15:17:16 2021 +0200

    dsl: adapt to latest RouteBuilder support
---
 dsl/camel-groovy-dsl/camel-groovy-dsl/pom.xml      |  4 ++
 .../dsl/groovy/GroovyRoutesBuilderLoader.java      | 60 ++++++++++----------
 .../dsl/groovy/GroovyRoutesBuilderSupport.java     | 53 ------------------
 dsl/camel-java-joor-dsl/pom.xml                    |  4 ++
 .../dsl/java/joor/JavaRoutesBuilderLoader.java     | 38 +++----------
 dsl/camel-js-dsl/pom.xml                           |  2 +-
 .../dsl/js/JavaScriptRoutesBuilderLoader.java      | 43 ++------------
 dsl/camel-kotlin-dsl/pom.xml                       |  2 +-
 .../camel/dsl/kotlin/KotlinRoutesBuilderLoader.kt  | 40 +------------
 dsl/camel-xml-io-dsl/pom.xml                       |  4 ++
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 65 +++++++---------------
 dsl/camel-xml-jaxb-dsl/pom.xml                     |  4 ++
 .../dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java   | 65 +++++++---------------
 dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml          |  6 +-
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    | 30 ++--------
 15 files changed, 107 insertions(+), 313 deletions(-)

diff --git a/dsl/camel-groovy-dsl/camel-groovy-dsl/pom.xml b/dsl/camel-groovy-dsl/camel-groovy-dsl/pom.xml
index fba542c..a21a50e 100644
--- a/dsl/camel-groovy-dsl/camel-groovy-dsl/pom.xml
+++ b/dsl/camel-groovy-dsl/camel-groovy-dsl/pom.xml
@@ -54,6 +54,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-dsl-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-groovy-dsl-common</artifactId>
         </dependency>
     </dependencies>
diff --git a/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderLoader.java b/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderLoader.java
index 470d928..ad98d84 100644
--- a/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderLoader.java
+++ b/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderLoader.java
@@ -16,53 +16,49 @@
  */
 package org.apache.camel.dsl.groovy;
 
+import java.io.Reader;
+
+import groovy.lang.Binding;
+import groovy.lang.GroovyShell;
+import groovy.util.DelegatingScript;
 import org.apache.camel.Experimental;
-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.endpoint.EndpointRouteBuilder;
-import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
+import org.apache.camel.dsl.groovy.common.GroovyDSL;
+import org.apache.camel.dsl.support.EndpointRouteBuilderLoaderSupport;
 import org.apache.camel.spi.annotations.RoutesLoader;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.codehaus.groovy.control.customizers.ImportCustomizer;
 
 @Experimental
 @ManagedResource(description = "Managed GroovyRoutesBuilderLoader")
 @RoutesLoader(GroovyRoutesBuilderLoader.EXTENSION)
-public class GroovyRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
+public class GroovyRoutesBuilderLoader extends EndpointRouteBuilderLoaderSupport {
     public static final String EXTENSION = "groovy";
 
-    private StartupStepRecorder recorder;
+    public GroovyRoutesBuilderLoader() {
+        super(EXTENSION);
+    }
 
     @Override
-    protected void doBuild() throws Exception {
-        super.doBuild();
+    protected void doLoadEndpointRouteBuilder(Reader reader, EndpointRouteBuilder builder) {
+        ImportCustomizer ic = new ImportCustomizer();
+        ic.addStarImports("org.apache.camel");
+        ic.addStarImports("org.apache.camel.spi");
 
-        if (getCamelContext() != null) {
-            this.recorder = getCamelContext().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
-        }
-    }
+        CompilerConfiguration cc = new CompilerConfiguration();
+        cc.addCompilationCustomizers(ic);
+        cc.setScriptBaseClass(DelegatingScript.class.getName());
 
-    @ManagedAttribute(description = "Supported file extension")
-    @Override
-    public String getSupportedExtension() {
-        return EXTENSION;
-    }
+        ClassLoader cl = builder.getContext().getApplicationContextClassLoader() != null
+                ? builder.getContext().getApplicationContextClassLoader()
+                : Thread.currentThread().getContextClassLoader();
 
-    @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
-        StartupStep step = recorder != null
-                ? recorder.beginStep(GroovyRoutesBuilderLoader.class, resource.getLocation(), "Compiling RouteBuilder")
-                : null;
+        GroovyShell sh = new GroovyShell(cl, new Binding(), cc);
+        DelegatingScript script = (DelegatingScript) sh.parse(reader);
 
-        try {
-            return EndpointRouteBuilder.loadEndpointRoutesBuilder(resource, GroovyRoutesBuilderSupport::load);
-        } finally {
-            if (recorder != null) {
-                recorder.endStep(step);
-            }
-        }
+        // set the delegate target
+        script.setDelegate(new GroovyDSL(builder));
+        script.run();
     }
 }
diff --git a/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderSupport.java b/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderSupport.java
deleted file mode 100644
index a28ed79..0000000
--- a/dsl/camel-groovy-dsl/camel-groovy-dsl/src/main/java/org/apache/camel/dsl/groovy/GroovyRoutesBuilderSupport.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.dsl.groovy;
-
-import java.io.Reader;
-
-import groovy.lang.Binding;
-import groovy.lang.GroovyShell;
-import groovy.util.DelegatingScript;
-import org.apache.camel.builder.endpoint.EndpointRouteBuilder;
-import org.apache.camel.dsl.groovy.common.GroovyDSL;
-import org.codehaus.groovy.control.CompilerConfiguration;
-import org.codehaus.groovy.control.customizers.ImportCustomizer;
-
-public final class GroovyRoutesBuilderSupport {
-    private GroovyRoutesBuilderSupport() {
-    }
-
-    static void load(Reader reader, EndpointRouteBuilder builder) {
-        ImportCustomizer ic = new ImportCustomizer();
-        ic.addStarImports("org.apache.camel");
-        ic.addStarImports("org.apache.camel.spi");
-
-        CompilerConfiguration cc = new CompilerConfiguration();
-        cc.addCompilationCustomizers(ic);
-        cc.setScriptBaseClass(DelegatingScript.class.getName());
-
-        ClassLoader cl = builder.getContext().getApplicationContextClassLoader() != null
-                ? builder.getContext().getApplicationContextClassLoader()
-                : Thread.currentThread().getContextClassLoader();
-
-        GroovyShell sh = new GroovyShell(cl, new Binding(), cc);
-        DelegatingScript script = (DelegatingScript) sh.parse(reader);
-
-        // set the delegate target
-        script.setDelegate(new GroovyDSL(builder));
-        script.run();
-    }
-}
diff --git a/dsl/camel-java-joor-dsl/pom.xml b/dsl/camel-java-joor-dsl/pom.xml
index 4167ff9..a5512e4 100644
--- a/dsl/camel-java-joor-dsl/pom.xml
+++ b/dsl/camel-java-joor-dsl/pom.xml
@@ -52,6 +52,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-core-model</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-dsl-support</artifactId>
+        </dependency>
 
         <!-- requires Java 11 or 14 -->
         <dependency>
diff --git a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
index 949618b..f134840 100644
--- a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
+++ b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
@@ -20,58 +20,34 @@ import java.io.InputStream;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-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.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.RoutesLoader;
 import org.apache.camel.support.ResourceHelper;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.joor.Reflect;
 
 @ManagedResource(description = "Managed JavaRoutesBuilderLoader")
 @RoutesLoader(JavaRoutesBuilderLoader.EXTENSION)
-public class JavaRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
+public class JavaRoutesBuilderLoader extends RouteBuilderLoaderSupport {
     public static final String EXTENSION = "java";
     public static final Pattern PACKAGE_PATTERN = Pattern.compile(
             "^\\s*package\\s+([a-zA-Z][\\.\\w]*)\\s*;.*$", Pattern.MULTILINE);
 
-    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() {
-        return EXTENSION;
+    public JavaRoutesBuilderLoader() {
+        super(EXTENSION);
     }
 
     @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
+    public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception {
         try (InputStream is = resource.getInputStream()) {
             final String content = IOHelper.loadText(is);
             final String name = determineName(resource, content);
 
-            StartupStep step = recorder != null
-                    ? recorder.beginStep(JavaRoutesBuilderLoader.class, name, "Compiling RouteBuilder")
-                    : null;
-
-            try {
-                return Reflect.compile(name, content).create().get();
-            } finally {
-                if (recorder != null) {
-                    recorder.endStep(step);
-                }
-            }
+            return Reflect.compile(name, content).create().get();
         }
     }
 
diff --git a/dsl/camel-js-dsl/pom.xml b/dsl/camel-js-dsl/pom.xml
index aace007..1e7c93f 100644
--- a/dsl/camel-js-dsl/pom.xml
+++ b/dsl/camel-js-dsl/pom.xml
@@ -54,7 +54,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
+            <artifactId>camel-dsl-support</artifactId>
         </dependency>
 
         <!-- requires Java 11 or 14 -->
diff --git a/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java b/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
index 6d9a052..b79c8ab 100644
--- a/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
+++ b/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
@@ -19,17 +19,11 @@ package org.apache.camel.dsl.js;
 import java.io.Reader;
 
 import org.apache.camel.CamelContext;
-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.endpoint.EndpointRouteBuilder;
-import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
+import org.apache.camel.dsl.support.EndpointRouteBuilderLoaderSupport;
 import org.apache.camel.spi.annotations.RoutesLoader;
 import org.apache.camel.support.LifecycleStrategySupport;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
 import org.graalvm.polyglot.Context;
 import org.graalvm.polyglot.Value;
 
@@ -37,43 +31,16 @@ import static org.graalvm.polyglot.Source.newBuilder;
 
 @ManagedResource(description = "Managed JavaScriptRoutesBuilderLoader")
 @RoutesLoader(JavaScriptRoutesBuilderLoader.EXTENSION)
-public class JavaScriptRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
+public class JavaScriptRoutesBuilderLoader extends EndpointRouteBuilderLoaderSupport {
     public static final String EXTENSION = "js";
     public static final String LANGUAGE_ID = "js";
 
-    private StartupStepRecorder recorder;
-
-    @Override
-    protected void doBuild() throws Exception {
-        super.doBuild();
-
-        if (getCamelContext() != null) {
-            this.recorder = getCamelContext().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
-        }
-    }
-
-    @ManagedAttribute(description = "Supported file extension")
-    @Override
-    public String getSupportedExtension() {
-        return EXTENSION;
+    public JavaScriptRoutesBuilderLoader() {
+        super(EXTENSION);
     }
 
     @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
-        StartupStep step = recorder != null
-                ? recorder.beginStep(JavaScriptRoutesBuilderLoader.class, resource.getLocation(), "Compiling RouteBuilder")
-                : null;
-
-        try {
-            return EndpointRouteBuilder.loadEndpointRoutesBuilder(resource, this::load);
-        } finally {
-            if (recorder != null) {
-                recorder.endStep(step);
-            }
-        }
-    }
-
-    private void load(Reader reader, EndpointRouteBuilder builder) {
+    protected void doLoadEndpointRouteBuilder(Reader reader, EndpointRouteBuilder builder) {
         final Context context = Context.newBuilder(LANGUAGE_ID).allowAllAccess(true).build();
         final Value bindings = context.getBindings(LANGUAGE_ID);
 
diff --git a/dsl/camel-kotlin-dsl/pom.xml b/dsl/camel-kotlin-dsl/pom.xml
index a876cb4..3e316ea 100644
--- a/dsl/camel-kotlin-dsl/pom.xml
+++ b/dsl/camel-kotlin-dsl/pom.xml
@@ -54,7 +54,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
+            <artifactId>camel-dsl-support</artifactId>
         </dependency>
 
         <dependency>
diff --git a/dsl/camel-kotlin-dsl/src/main/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoader.kt b/dsl/camel-kotlin-dsl/src/main/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoader.kt
index e916b18..cb195ac 100644
--- a/dsl/camel-kotlin-dsl/src/main/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoader.kt
+++ b/dsl/camel-kotlin-dsl/src/main/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoader.kt
@@ -17,19 +17,13 @@
 package org.apache.camel.dsl.kotlin
 
 import org.apache.camel.Experimental
-import org.apache.camel.ExtendedCamelContext
-import org.apache.camel.RoutesBuilder
 import org.apache.camel.RuntimeCamelException
-import org.apache.camel.api.management.ManagedAttribute
 import org.apache.camel.api.management.ManagedResource
 import org.apache.camel.builder.endpoint.EndpointRouteBuilder
-import org.apache.camel.spi.Resource
-import org.apache.camel.spi.StartupStepRecorder
+import org.apache.camel.dsl.support.EndpointRouteBuilderLoaderSupport
 import org.apache.camel.spi.annotations.RoutesLoader
-import org.apache.camel.support.RoutesBuilderLoaderSupport
 import org.slf4j.LoggerFactory
 import java.io.Reader
-import java.lang.Exception
 import kotlin.script.experimental.api.*
 import kotlin.script.experimental.host.toScriptSource
 import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
@@ -38,37 +32,9 @@ import kotlin.script.experimental.jvmhost.createJvmCompilationConfigurationFromT
 @Experimental
 @ManagedResource(description = "Managed KotlinRoutesBuilderLoader")
 @RoutesLoader(EXTENSION)
-class KotlinRoutesBuilderLoader : RoutesBuilderLoaderSupport() {
-    var recorder: StartupStepRecorder? = null
-
+class KotlinRoutesBuilderLoader : EndpointRouteBuilderLoaderSupport(EXTENSION) {
     @Throws(Exception::class)
-    override fun doBuild() {
-        super.doBuild()
-
-        if (camelContext != null) {
-            this.recorder = camelContext.adapt(ExtendedCamelContext::class.java).startupStepRecorder
-        }
-    }
-
-    @ManagedAttribute(description = "Supported file extension")
-    override fun getSupportedExtension(): String {
-        return EXTENSION
-    }
-
-    @Throws(Exception::class)
-    override fun loadRoutesBuilder(resource: Resource): RoutesBuilder? {
-        val step = if (recorder != null) recorder!!.beginStep(KotlinRoutesBuilderLoader::class.java, resource.location, "Compiling RouteBuilder") else null
-
-        try {
-            return EndpointRouteBuilder.loadEndpointRoutesBuilder(resource) {
-                reader, builder -> load(reader, builder)
-            }
-        } finally {
-            recorder?.endStep(step)
-        }
-    }
-
-    private fun load(reader: Reader, builder: EndpointRouteBuilder) {
+    override fun doLoadEndpointRouteBuilder(reader: Reader, builder: EndpointRouteBuilder) {
         val host = BasicJvmScriptingHost()
         val config = createJvmCompilationConfigurationFromTemplate<KotlinDSL>()
 
diff --git a/dsl/camel-xml-io-dsl/pom.xml b/dsl/camel-xml-io-dsl/pom.xml
index 32f6eb9..5c2be48 100644
--- a/dsl/camel-xml-io-dsl/pom.xml
+++ b/dsl/camel-xml-io-dsl/pom.xml
@@ -50,6 +50,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-xml-io</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-dsl-support</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
diff --git a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index e8f2b4b..589f2d1 100644
--- a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++ b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -18,70 +18,43 @@ package org.apache.camel.dsl.xml.io;
 
 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.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.RoutesLoader;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
 import org.apache.camel.xml.in.ModelParser;
 
 @ManagedResource(description = "Managed XML RoutesBuilderLoader")
 @RoutesLoader(XmlRoutesBuilderLoader.EXTENSION)
-public class XmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
-
+public class XmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
     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();
+    public XmlRoutesBuilderLoader() {
+        super(EXTENSION);
     }
 
-    @ManagedAttribute(description = "Supported file extension")
     @Override
-    public String getSupportedExtension() {
-        return EXTENSION;
-    }
-
-    @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
+    public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 // 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);
-                    }
+                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);
                 }
             }
         };
diff --git a/dsl/camel-xml-jaxb-dsl/pom.xml b/dsl/camel-xml-jaxb-dsl/pom.xml
index 4587a76..d96cecb 100644
--- a/dsl/camel-xml-jaxb-dsl/pom.xml
+++ b/dsl/camel-xml-jaxb-dsl/pom.xml
@@ -50,6 +50,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-xml-jaxb</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-dsl-support</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
diff --git a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
index 6413a23..906e4b0 100644
--- a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
+++ b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
@@ -18,19 +18,14 @@ package org.apache.camel.dsl.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;
+import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.RoutesLoader;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
 
 import static org.apache.camel.xml.jaxb.JaxbHelper.loadRestsDefinition;
 import static org.apache.camel.xml.jaxb.JaxbHelper.loadRouteTemplatesDefinition;
@@ -38,59 +33,37 @@ import static org.apache.camel.xml.jaxb.JaxbHelper.loadRoutesDefinition;
 
 @ManagedResource(description = "Managed JAXB XML RoutesBuilderLoader")
 @RoutesLoader(JaxbXmlRoutesBuilderLoader.EXTENSION)
-public class JaxbXmlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
-
+public class JaxbXmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
     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() {
-        return EXTENSION;
+    public JaxbXmlRoutesBuilderLoader() {
+        super(EXTENSION);
     }
 
     @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
+    public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 // 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()) {
+                    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);
-                        }
-                    }
-                } finally {
-                    if (recorder != null) {
-                        recorder.endStep(step);
+                try (InputStream is = resource.getInputStream()) {
+                    RoutesDefinition routes = loadRoutesDefinition(getCamelContext(), is);
+                    if (routes != null) {
+                        setRouteCollection(routes);
                     }
                 }
             }
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
index 0ab5a61..54169ce 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml
@@ -47,12 +47,14 @@
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-yaml-dsl-common</artifactId>
-            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-yaml-dsl-deserializers</artifactId>
-            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-dsl-support</artifactId>
         </dependency>
 
         <dependency>
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index e313569..73c1d8c 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -19,13 +19,10 @@ package org.apache.camel.dsl.yaml;
 import java.io.InputStream;
 import java.util.List;
 
-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.ErrorHandlerBuilder;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.dsl.yaml.common.YamlDeserializationContext;
 import org.apache.camel.dsl.yaml.deserializers.CustomResolver;
 import org.apache.camel.dsl.yaml.deserializers.EndpointProducerDeserializersResolver;
@@ -37,9 +34,7 @@ import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.VerbDefinition;
 import org.apache.camel.spi.CamelContextCustomizer;
 import org.apache.camel.spi.Resource;
-import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.annotations.RoutesLoader;
-import org.apache.camel.support.RoutesBuilderLoaderSupport;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.snakeyaml.engine.v2.api.Load;
@@ -47,28 +42,20 @@ import org.snakeyaml.engine.v2.api.LoadSettings;
 
 @ManagedResource(description = "Managed YAML RoutesBuilderLoader")
 @RoutesLoader(YamlRoutesBuilderLoader.EXTENSION)
-public class YamlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
+public class YamlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
     public static final String EXTENSION = "yaml";
 
     private LoadSettings settings;
     private YamlDeserializationContext constructor;
-    private StartupStepRecorder recorder;
 
     public YamlRoutesBuilderLoader() {
-    }
-
-    @ManagedAttribute(description = "Supported file extension")
-    @Override
-    public String getSupportedExtension() {
-        return EXTENSION;
+        super(EXTENSION);
     }
 
     @Override
     protected void doBuild() throws Exception {
         super.doBuild();
 
-        this.recorder = getCamelContext().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
-
         this.settings = LoadSettings.builder().build();
         this.constructor = new YamlDeserializationContext(settings);
         this.constructor.setCamelContext(getCamelContext());
@@ -95,7 +82,7 @@ public class YamlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
     }
 
     @Override
-    public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
+    public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception {
         ObjectHelper.notNull(constructor, "constructor");
         ObjectHelper.notNull(settings, "settings");
 
@@ -104,20 +91,11 @@ public class YamlRoutesBuilderLoader extends RoutesBuilderLoaderSupport {
             public void configure() throws Exception {
                 final Load load = new Load(settings, constructor);
 
-                StartupStep step = recorder != null
-                        ? recorder.beginStep(YamlRoutesBuilderLoader.class, resource.getLocation(),
-                                "Loading and Parsing YAML routes")
-                        : null;
-
                 try (InputStream is = resource.getInputStream()) {
                     for (Object item : (List<?>) load.loadFromInputStream(is)) {
 
                         configure(item);
                     }
-                } finally {
-                    if (recorder != null) {
-                        recorder.endStep(step);
-                    }
                 }
             }