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 2023/06/19 08:59:24 UTC

[camel] branch main updated: CAMEL-19449: camel-yaml-io - Add option to dump with uri-as-parameters. Removed methods for dumping XML that are not really needed.

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 bd81497c86a CAMEL-19449: camel-yaml-io - Add option to dump with uri-as-parameters. Removed methods for dumping XML that are not really needed.
bd81497c86a is described below

commit bd81497c86a7048153b28fc22e5fcfb76052d8eb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jun 19 10:54:18 2023 +0200

    CAMEL-19449: camel-yaml-io - Add option to dump with uri-as-parameters. Removed methods for dumping XML that are not really needed.
---
 .../routebuilder/SpringRouteTemplateTest.java      |  4 +-
 .../org/apache/camel/spi/ModelToXMLDumper.java     | 15 ++---
 .../org/apache/camel/spi/ModelToYAMLDumper.java    | 15 +++--
 .../camel/impl/console/RouteDumpDevConsole.java    | 13 +++-
 .../org/apache/camel/impl/DefaultCamelContext.java | 12 ++--
 .../util/DumpModelAsXmlFromRouteTemplateTest.java  |  6 +-
 .../management/mbean/ManagedCamelContextMBean.java |  5 +-
 .../api/management/mbean/ManagedRouteMBean.java    |  5 +-
 .../management/mbean/ManagedCamelContext.java      | 17 ++---
 .../camel/management/mbean/ManagedRoute.java       | 14 ++---
 .../ManagedCamelContextDumpRoutesAsXmlTest.java    | 22 -------
 .../ManagedCamelContextDumpRoutesAsYamlTest.java   | 14 +++--
 .../management/ManagedRouteDumpRouteAsXmlTest.java | 28 ---------
 .../org/apache/camel/xml/LwModelToXMLDumper.java   | 20 ++----
 .../camel/xml/jaxb/JaxbModelToXMLDumper.java       | 73 ++++++++--------------
 .../org/apache/camel/yaml/LwModelToYAMLDumper.java | 20 ++----
 .../java/org/apache/camel/yaml/io/YamlWriter.java  |  7 ++-
 .../java/org/apache/camel/yaml/out/BaseWriter.java |  4 ++
 .../org/apache/camel/yaml/out/ModelWriterTest.java |  4 +-
 ...st.java => ModelWriterUriAsParametersTest.java} | 12 +++-
 core/camel-yaml-io/src/test/resources/route0b.yaml | 10 +++
 core/camel-yaml-io/src/test/resources/route8b.yaml | 20 ++++++
 .../ROOT/pages/camel-4-migration-guide.adoc        |  2 +
 .../camel/cli/connector/LocalCliConnector.java     |  4 +-
 .../core/commands/action/CamelRouteDumpAction.java |  5 ++
 25 files changed, 150 insertions(+), 201 deletions(-)

diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
index 82dd0f8d412..3a678a7cfff 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
@@ -155,7 +155,7 @@ public class SpringRouteTemplateTest extends SpringTestSupport {
 
         RouteDefinition def = context.getRouteDefinition("first");
 
-        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, true, true);
+        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, true);
 
         assertNotNull(xml);
         Assertions.assertTrue(xml.contains("<from uri=\"direct:one\"/>"));
@@ -171,7 +171,7 @@ public class SpringRouteTemplateTest extends SpringTestSupport {
         RoutesDefinition def = new RoutesDefinition();
         def.setRoutes(context.getRouteDefinitions());
 
-        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, true, true);
+        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, true);
 
         assertNotNull(xml);
         Assertions.assertTrue(xml.contains("<from uri=\"direct:one\"/>"));
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
index 3dfd7ff3a85..cbd9b885316 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
@@ -42,17 +42,14 @@ public interface ModelToXMLDumper {
     /**
      * Dumps the definition as XML
      *
-     * @param  context                  the CamelContext
-     * @param  definition               the definition, such as a {@link org.apache.camel.NamedNode}
-     * @param  resolvePlaceholders      whether to resolve property placeholders in the dumped XML
-     * @param  resolveDelegateEndpoints whether to resolve delegate endpoints in the dumped XML (limited to endpoints
-     *                                  used in uri attributes in the model)
-     * @return                          the output in XML (is formatted)
-     * @throws Exception                is throw if error marshalling to XML
+     * @param  context             the CamelContext
+     * @param  definition          the definition, such as a {@link org.apache.camel.NamedNode}
+     * @param  resolvePlaceholders whether to resolve property placeholders in the dumped XML
+     * @return                     the output in XML (is formatted)
+     * @throws Exception           is throw if error marshalling to XML
      */
     String dumpModelAsXml(
-            CamelContext context, NamedNode definition,
-            boolean resolvePlaceholders, boolean resolveDelegateEndpoints)
+            CamelContext context, NamedNode definition, boolean resolvePlaceholders)
             throws Exception;
 
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToYAMLDumper.java b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToYAMLDumper.java
index ceb87c48270..6c76313bd9d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToYAMLDumper.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToYAMLDumper.java
@@ -42,17 +42,16 @@ public interface ModelToYAMLDumper {
     /**
      * Dumps the definition as YAML
      *
-     * @param  context                  the CamelContext
-     * @param  definition               the definition, such as a {@link NamedNode}
-     * @param  resolvePlaceholders      whether to resolve property placeholders in the dumped YAML
-     * @param  resolveDelegateEndpoints whether to resolve delegate endpoints in the dumped YAML (limited to endpoints
-     *                                  used in uri attributes in the model)
-     * @return                          the output in YAML (is formatted)
-     * @throws Exception                is throw if error marshalling to YAML
+     * @param  context             the CamelContext
+     * @param  definition          the definition, such as a {@link NamedNode}
+     * @param  resolvePlaceholders whether to resolve property placeholders in the dumped YAML
+     * @param  uriAsParameters     whether to expand uri into a key/value parameters
+     * @return                     the output in YAML (is formatted)
+     * @throws Exception           is throw if error marshalling to YAML
      */
     String dumpModelAsYaml(
             CamelContext context, NamedNode definition,
-            boolean resolvePlaceholders, boolean resolveDelegateEndpoints)
+            boolean resolvePlaceholders, boolean uriAsParameters)
             throws Exception;
 
 }
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
index f4e2d2001ab..71ebdb7d26d 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
@@ -50,12 +50,19 @@ public class RouteDumpDevConsole extends AbstractDevConsole {
      */
     public static final String LIMIT = "limit";
 
+    /**
+     * Whether to expand URIs into separated key/value parameters
+     */
+    public static final String URI_AS_PARAMETERS = "uriAsParameters";
+
     public RouteDumpDevConsole() {
         super("camel", "route-dump", "Route Dump", "Dump route structure in XML or YAML format");
     }
 
     @Override
     protected String doCallText(Map<String, Object> options) {
+        final String uriAsParameters = (String) options.getOrDefault(URI_AS_PARAMETERS, "false");
+
         final StringBuilder sb = new StringBuilder();
         Function<ManagedRouteMBean, Object> task = mrb -> {
             String dump = null;
@@ -64,7 +71,7 @@ public class RouteDumpDevConsole extends AbstractDevConsole {
                 if (format == null || "xml".equals(format)) {
                     dump = mrb.dumpRouteAsXml();
                 } else if ("yaml".equals(format)) {
-                    dump = mrb.dumpRouteAsYaml();
+                    dump = mrb.dumpRouteAsYaml(true, "true".equals(uriAsParameters));
                 }
             } catch (Exception e) {
                 // ignore
@@ -90,6 +97,8 @@ public class RouteDumpDevConsole extends AbstractDevConsole {
 
     @Override
     protected JsonObject doCallJson(Map<String, Object> options) {
+        final String uriAsParameters = (String) options.getOrDefault(URI_AS_PARAMETERS, "false");
+
         final JsonObject root = new JsonObject();
         final List<JsonObject> list = new ArrayList<>();
 
@@ -111,7 +120,7 @@ public class RouteDumpDevConsole extends AbstractDevConsole {
                     dump = mrb.dumpRouteAsXml();
                 } else if ("yaml".equals(format)) {
                     jo.put("format", "yaml");
-                    dump = mrb.dumpRouteAsYaml();
+                    dump = mrb.dumpRouteAsYaml(true, "true".equals(uriAsParameters));
                 }
                 if (dump != null) {
                     List<JsonObject> code = ConsoleHelper.loadSourceAsJson(new StringReader(dump), null);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index e6d7e035fd0..7a38fe8f0b4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -172,7 +172,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RoutesDefinition def = new RoutesDefinition();
             def.setRoutes(getRouteDefinitions());
             try {
-                String xml = dumper.dumpModelAsXml(this, def, true, true);
+                String xml = dumper.dumpModelAsXml(this, def, true);
                 // lets separate routes with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
@@ -190,7 +190,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RestsDefinition def = new RestsDefinition();
             def.setRests(getRestDefinitions());
             try {
-                String xml = dumper.dumpModelAsXml(this, def, true, true);
+                String xml = dumper.dumpModelAsXml(this, def, true);
                 // lets separate rests with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
@@ -208,7 +208,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RouteTemplatesDefinition def = new RouteTemplatesDefinition();
             def.setRouteTemplates(getRouteTemplateDefinitions());
             try {
-                String xml = dumper.dumpModelAsXml(this, def, true, true);
+                String xml = dumper.dumpModelAsXml(this, def, true);
                 // lets separate rests with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
@@ -229,7 +229,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RoutesDefinition def = new RoutesDefinition();
             def.setRoutes(getRouteDefinitions());
             try {
-                String yaml = dumper.dumpModelAsYaml(this, def, true, true);
+                String yaml = dumper.dumpModelAsYaml(this, def, true, false);
                 LOG.info("\n\n{}\n", yaml);
             } catch (Exception e) {
                 LOG.warn("Error dumping routes to YAML due to {}. This exception is ignored.", e.getMessage(), e);
@@ -242,7 +242,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RestsDefinition def = new RestsDefinition();
             def.setRests(getRestDefinitions());
             try {
-                String taml = dumper.dumpModelAsYaml(this, def, true, true);
+                String taml = dumper.dumpModelAsYaml(this, def, true, false);
                 LOG.info("\n\n{}\n", taml);
             } catch (Exception e) {
                 LOG.warn("Error dumping rests to YAML due to {}. This exception is ignored.", e.getMessage(), e);
@@ -255,7 +255,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
             RouteTemplatesDefinition def = new RouteTemplatesDefinition();
             def.setRouteTemplates(getRouteTemplateDefinitions());
             try {
-                String yaml = dumper.dumpModelAsYaml(this, def, true, true);
+                String yaml = dumper.dumpModelAsYaml(this, def, true, false);
                 LOG.info("\n\n{}\n", yaml);
             } catch (Exception e) {
                 LOG.warn("Error dumping route-templates to YAML due to {}. This exception is ignored.", e.getMessage(), e);
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlFromRouteTemplateTest.java b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlFromRouteTemplateTest.java
index e86e4443165..8174cee9e8e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlFromRouteTemplateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlFromRouteTemplateTest.java
@@ -81,8 +81,7 @@ public class DumpModelAsXmlFromRouteTemplateTest extends ContextTestSupport {
         map.put("whereto", "Jacks");
         context.addRouteFromTemplate("bar2", "myTemplate", map);
 
-        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, context.getRouteDefinition("bar"), true,
-                false);
+        String xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, context.getRouteDefinition("bar"), true);
         assertNotNull(xml);
         log.info(xml);
 
@@ -104,8 +103,7 @@ public class DumpModelAsXmlFromRouteTemplateTest extends ContextTestSupport {
         node = (Element) nodes.item(0);
         assertEquals("bar", node.getAttribute("id"));
 
-        xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, context.getRouteDefinition("bar2"), true,
-                false);
+        xml = PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, context.getRouteDefinition("bar2"), true);
         assertNotNull(xml);
         log.info(xml);
 
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
index 9f71a946cdc..d7de3e7fb1c 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
@@ -195,9 +195,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedOperation(description = "Dumps the routes as XML")
     String dumpRoutesAsXml(boolean resolvePlaceholders) throws Exception;
 
-    @ManagedOperation(description = "Dumps the routes as XML")
-    String dumpRoutesAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception;
-
     @ManagedOperation(description = "Dumps the CamelContext and routes stats as XML")
     String dumpRoutesStatsAsXml(boolean fullStats, boolean includeProcessors) throws Exception;
 
@@ -217,7 +214,7 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     String dumpRoutesAsYaml(boolean resolvePlaceholders) throws Exception;
 
     @ManagedOperation(description = "Dumps the routes as YAML")
-    String dumpRoutesAsYaml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception;
+    String dumpRoutesAsYaml(boolean resolvePlaceholders, boolean uriAsParameters) throws Exception;
 
     /**
      * Creates the endpoint by the given uri
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
index 1908180f2a4..4f6e7dc2b8a 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
@@ -121,9 +121,6 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
     @ManagedOperation(description = "Dumps the route as XML")
     String dumpRouteAsXml(boolean resolvePlaceholders) throws Exception;
 
-    @ManagedOperation(description = "Dumps the route as XML")
-    String dumpRouteAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception;
-
     @ManagedOperation(description = "Dumps the route as YAML")
     String dumpRouteAsYaml() throws Exception;
 
@@ -131,7 +128,7 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
     String dumpRouteAsYaml(boolean resolvePlaceholders) throws Exception;
 
     @ManagedOperation(description = "Dumps the route as YAML")
-    String dumpRouteAsYaml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception;
+    String dumpRouteAsYaml(boolean resolvePlaceholders, boolean uriAsParameters) throws Exception;
 
     @ManagedOperation(description = "Dumps the route stats as XML")
     String dumpRouteStatsAsXml(boolean fullStats, boolean includeProcessors) throws Exception;
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
index 1684cf344b2..382f54fa0c0 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
@@ -465,21 +465,16 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         RestsDefinition def = new RestsDefinition();
         def.setRests(rests);
 
-        return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders, false);
+        return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders);
     }
 
     @Override
     public String dumpRoutesAsXml() throws Exception {
-        return dumpRoutesAsXml(false, false);
+        return dumpRoutesAsXml(false);
     }
 
     @Override
     public String dumpRoutesAsXml(boolean resolvePlaceholders) throws Exception {
-        return dumpRoutesAsXml(resolvePlaceholders, false);
-    }
-
-    @Override
-    public String dumpRoutesAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception {
         List<RouteDefinition> routes = context.getCamelContextExtension().getContextPlugin(Model.class).getRouteDefinitions();
         if (routes.isEmpty()) {
             return null;
@@ -489,8 +484,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         RoutesDefinition def = new RoutesDefinition();
         def.setRoutes(routes);
 
-        return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders,
-                resolveDelegateEndpoints);
+        return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders);
     }
 
     @Override
@@ -504,7 +498,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
     }
 
     @Override
-    public String dumpRoutesAsYaml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception {
+    public String dumpRoutesAsYaml(boolean resolvePlaceholders, boolean uriAsParameters) throws Exception {
         List<RouteDefinition> routes = context.getCamelContextExtension().getContextPlugin(Model.class).getRouteDefinitions();
         if (routes.isEmpty()) {
             return null;
@@ -514,8 +508,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         RoutesDefinition def = new RoutesDefinition();
         def.setRoutes(routes);
 
-        return PluginHelper.getModelToYAMLDumper(context).dumpModelAsYaml(context, def, resolvePlaceholders,
-                resolveDelegateEndpoints);
+        return PluginHelper.getModelToYAMLDumper(context).dumpModelAsYaml(context, def, resolvePlaceholders, uriAsParameters);
     }
 
     @Override
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
index 6387afd1c7b..7b8154c363e 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
@@ -383,21 +383,15 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
 
     @Override
     public String dumpRouteAsXml() throws Exception {
-        return dumpRouteAsXml(false, false);
+        return dumpRouteAsXml(false);
     }
 
     @Override
     public String dumpRouteAsXml(boolean resolvePlaceholders) throws Exception {
-        return dumpRouteAsXml(resolvePlaceholders, false);
-    }
-
-    @Override
-    public String dumpRouteAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception {
         String id = route.getId();
         RouteDefinition def = context.getCamelContextExtension().getContextPlugin(Model.class).getRouteDefinition(id);
         if (def != null) {
-            return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders,
-                    resolveDelegateEndpoints);
+            return PluginHelper.getModelToXMLDumper(context).dumpModelAsXml(context, def, resolvePlaceholders);
         }
 
         return null;
@@ -414,12 +408,12 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
     }
 
     @Override
-    public String dumpRouteAsYaml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) throws Exception {
+    public String dumpRouteAsYaml(boolean resolvePlaceholders, boolean uriAsParameters) throws Exception {
         String id = route.getId();
         RouteDefinition def = context.getCamelContextExtension().getContextPlugin(Model.class).getRouteDefinition(id);
         if (def != null) {
             return PluginHelper.getModelToYAMLDumper(context).dumpModelAsYaml(context, def, resolvePlaceholders,
-                    resolveDelegateEndpoints);
+                    uriAsParameters);
         }
 
         return null;
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
index 1769312e2b7..30a5c5f8f75 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
@@ -73,28 +73,6 @@ public class ManagedCamelContextDumpRoutesAsXmlTest extends ManagementTestSuppor
         assertTrue(xml.contains("<header>bar</header>"));
     }
 
-    @Test
-    public void testDumpAsXmlResolvePlaceholderDelegateEndpoint() throws Exception {
-        MBeanServer mbeanServer = getMBeanServer();
-
-        ObjectName on = getContextObjectName();
-
-        String xml = (String) mbeanServer.invoke(on, "dumpRoutesAsXml", new Object[] { true, true },
-                new String[] { "boolean", "boolean" });
-        assertNotNull(xml);
-        log.info(xml);
-
-        assertTrue(xml.contains("route"));
-        assertTrue(xml.contains("myRoute"));
-        assertTrue(xml.contains("myOtherRoute"));
-        assertTrue(xml.contains("direct:start"));
-        assertTrue(xml.contains("mock:result"));
-        assertTrue(xml.contains("bar"));
-        assertTrue(xml.contains("seda:bar"));
-        assertTrue(xml.contains("mock://bar"));
-        assertTrue(xml.contains("<header>bar</header>"));
-    }
-
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsYamlTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsYamlTest.java
index a7a27c5055e..4e2f049c17b 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsYamlTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsYamlTest.java
@@ -48,7 +48,7 @@ public class ManagedCamelContextDumpRoutesAsYamlTest extends ManagementTestSuppo
         assertTrue(yaml.contains("myOtherRoute"));
         assertTrue(yaml.contains("direct:start"));
         assertTrue(yaml.contains("{{result}}"));
-        assertTrue(yaml.contains("seda:bar"));
+        assertTrue(yaml.contains("seda:bar?size=1234&multipleConsumers=true"));
         assertTrue(yaml.contains("ref:bar"));
         assertTrue(yaml.contains("expression: bar"));
     }
@@ -68,13 +68,13 @@ public class ManagedCamelContextDumpRoutesAsYamlTest extends ManagementTestSuppo
         assertTrue(yaml.contains("myOtherRoute"));
         assertTrue(yaml.contains("direct:start"));
         assertTrue(yaml.contains("mock:result"));
-        assertTrue(yaml.contains("seda:bar"));
+        assertTrue(yaml.contains("seda:bar?size=1234&multipleConsumers=true"));
         assertTrue(yaml.contains("ref:bar"));
         assertTrue(yaml.contains("expression: bar"));
     }
 
     @Test
-    public void testDumpAsYamlResolvePlaceholderDelegateEndpoint() throws Exception {
+    public void testDumpAsYamlUriAsParameters() throws Exception {
         MBeanServer mbeanServer = getMBeanServer();
 
         ObjectName on = getContextObjectName();
@@ -89,9 +89,11 @@ public class ManagedCamelContextDumpRoutesAsYamlTest extends ManagementTestSuppo
         assertTrue(yaml.contains("myOtherRoute"));
         assertTrue(yaml.contains("direct:start"));
         assertTrue(yaml.contains("mock:result"));
-        assertTrue(yaml.contains("bar"));
         assertTrue(yaml.contains("seda:bar"));
-        assertTrue(yaml.contains("mock://bar"));
+        assertTrue(yaml.contains("ref:bar"));
+        assertTrue(yaml.contains("parameters:"));
+        assertTrue(yaml.contains("size: 1234"));
+        assertTrue(yaml.contains("multipleConsumers: true"));
         assertTrue(yaml.contains("expression: bar"));
     }
 
@@ -111,7 +113,7 @@ public class ManagedCamelContextDumpRoutesAsYamlTest extends ManagementTestSuppo
                         .log("Got ${body}")
                         .to("{{result}}");
 
-                from("seda:bar").routeId("myOtherRoute")
+                from("seda:bar?size=1234&multipleConsumers=true").routeId("myOtherRoute")
                         .filter().header("bar")
                         .to("ref:bar")
                         .end();
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
index ba5e22306e4..8bd844eb749 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
@@ -90,34 +90,6 @@ public class ManagedRouteDumpRouteAsXmlTest extends ManagementTestSupport {
         assertTrue(xml.contains("java.lang.Exception"));
     }
 
-    @Test
-    public void testDumpAsXmlResolvePlaceholderDelegateEndpoint() throws Exception {
-        MBeanServer mbeanServer = getMBeanServer();
-        ObjectName on = getRouteObjectName(mbeanServer);
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Hello World");
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        // should be started
-        String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
-        assertEquals("myRoute", routeId);
-
-        String xml = (String) mbeanServer.invoke(on, "dumpRouteAsXml", new Object[] { true, true },
-                new String[] { "boolean", "boolean" });
-        assertNotNull(xml);
-        log.info(xml);
-
-        assertTrue(xml.contains("route"));
-        assertTrue(xml.contains("myRoute"));
-        assertTrue(xml.contains("mock://bar"));
-        assertTrue(xml.contains("mock:result"));
-        assertTrue(xml.contains("java.lang.Exception"));
-    }
-
     static ObjectName getRouteObjectName(MBeanServer mbeanServer) throws Exception {
         Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
         assertEquals(1, set.size());
diff --git a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
index 5fc74f2664f..6e593ec74bb 100644
--- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
+++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
@@ -26,8 +26,6 @@ import java.util.Properties;
 import java.util.function.Consumer;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.DelegateEndpoint;
-import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.NamedNode;
 import org.apache.camel.model.ExpressionNode;
@@ -56,12 +54,12 @@ public class LwModelToXMLDumper implements ModelToXMLDumper {
 
     @Override
     public String dumpModelAsXml(CamelContext context, NamedNode definition) throws Exception {
-        return dumpModelAsXml(context, definition, false, false);
+        return dumpModelAsXml(context, definition, false);
     }
 
     @Override
     public String dumpModelAsXml(
-            CamelContext context, NamedNode definition, boolean resolvePlaceholders, boolean resolveDelegateEndpoints)
+            CamelContext context, NamedNode definition, boolean resolvePlaceholders)
             throws Exception {
 
         Properties properties = new Properties();
@@ -137,18 +135,8 @@ public class LwModelToXMLDumper implements ModelToXMLDumper {
 
             @Override
             protected void attribute(String name, Object value) throws IOException {
-                if (value != null) {
-                    if (resolveDelegateEndpoints && "uri".equals(name)) {
-                        String uri = resolve(value.toString(), properties);
-                        Endpoint endpoint = context.hasEndpoint(uri);
-                        if (endpoint instanceof DelegateEndpoint) {
-                            endpoint = ((DelegateEndpoint) endpoint).getEndpoint();
-                            value = endpoint.getEndpointUri();
-                        }
-                    }
-                    if (resolvePlaceholders) {
-                        value = resolve(value.toString(), properties);
-                    }
+                if (resolvePlaceholders && value != null) {
+                    value = resolve(value.toString(), properties);
                 }
                 super.attribute(name, value);
             }
diff --git a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
index bc82155839e..4495e74b37a 100644
--- a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
@@ -40,8 +40,6 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.DelegateEndpoint;
-import org.apache.camel.Endpoint;
 import org.apache.camel.NamedNode;
 import org.apache.camel.TypeConversionException;
 import org.apache.camel.converter.jaxp.XmlConverter;
@@ -154,72 +152,51 @@ public class JaxbModelToXMLDumper implements ModelToXMLDumper {
 
     @Override
     public String dumpModelAsXml(
-            CamelContext context, NamedNode definition, boolean resolvePlaceholders, boolean resolveDelegateEndpoints)
+            CamelContext context, NamedNode definition, boolean resolvePlaceholders)
             throws Exception {
         String xml = dumpModelAsXml(context, definition);
 
         // if resolving placeholders we parse the xml, and resolve the property
         // placeholders during parsing
-        if (resolvePlaceholders || resolveDelegateEndpoints) {
+        if (resolvePlaceholders) {
             final AtomicBoolean changed = new AtomicBoolean();
             final InputStream is = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8));
             final Document dom = XmlLineNumberParser.parseXml(is, new XmlLineNumberParser.XmlTextTransformer() {
-                private String prev;
 
                 @Override
                 public String transform(String text) {
                     String after = text;
-                    if (resolveDelegateEndpoints && "uri".equals(prev)) {
-                        try {
-                            // must resolve placeholder as the endpoint may use
-                            // property placeholders
-                            String uri = context.resolvePropertyPlaceholders(text);
-                            Endpoint endpoint = context.hasEndpoint(uri);
-                            if (endpoint instanceof DelegateEndpoint) {
-                                endpoint = ((DelegateEndpoint) endpoint).getEndpoint();
-                                after = endpoint.getEndpointUri();
-                            }
-                        } catch (Exception e) {
-                            // ignore
-                        }
-                    }
 
-                    if (resolvePlaceholders) {
-                        PropertiesComponent pc = context.getPropertiesComponent();
-                        Properties prop = new Properties();
-                        Iterator<?> it = null;
-                        if (definition instanceof RouteDefinition) {
-                            it = ObjectHelper.createIterator(definition);
-                        } else if (definition instanceof RoutesDefinition) {
-                            it = ObjectHelper.createIterator(((RoutesDefinition) definition).getRoutes());
-                        }
-                        while (it != null && it.hasNext()) {
-                            RouteDefinition routeDefinition = (RouteDefinition) it.next();
-                            // if the route definition was created via a route template then we need to prepare its parameters when the route is being created and started
-                            if (routeDefinition.isTemplate() != null && routeDefinition.isTemplate()
-                                    && routeDefinition.getTemplateParameters() != null) {
-                                prop.putAll(routeDefinition.getTemplateParameters());
-                            }
-                        }
-                        pc.setLocalProperties(prop);
-                        try {
-                            after = context.resolvePropertyPlaceholders(after);
-                        } catch (Exception e) {
-                            // ignore
-                        } finally {
-                            // clear local after the route is dumped
-                            pc.setLocalProperties(null);
+                    PropertiesComponent pc = context.getPropertiesComponent();
+                    Properties prop = new Properties();
+                    Iterator<?> it = null;
+                    if (definition instanceof RouteDefinition) {
+                        it = ObjectHelper.createIterator(definition);
+                    } else if (definition instanceof RoutesDefinition) {
+                        it = ObjectHelper.createIterator(((RoutesDefinition) definition).getRoutes());
+                    }
+                    while (it != null && it.hasNext()) {
+                        RouteDefinition routeDefinition = (RouteDefinition) it.next();
+                        // if the route definition was created via a route template then we need to prepare its parameters when the route is being created and started
+                        if (routeDefinition.isTemplate() != null && routeDefinition.isTemplate()
+                                && routeDefinition.getTemplateParameters() != null) {
+                            prop.putAll(routeDefinition.getTemplateParameters());
                         }
                     }
+                    pc.setLocalProperties(prop);
+                    try {
+                        after = context.resolvePropertyPlaceholders(after);
+                    } catch (Exception e) {
+                        // ignore
+                    } finally {
+                        // clear local after the route is dumped
+                        pc.setLocalProperties(null);
+                    }
 
                     if (!changed.get()) {
                         changed.set(!text.equals(after));
                     }
 
-                    // okay the previous must be the attribute key with uri, so
-                    // it refers to an endpoint
-                    prev = text;
-
                     return after;
                 }
             });
diff --git a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
index d111e5c27b1..bd43ccaa839 100644
--- a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
+++ b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
@@ -26,8 +26,6 @@ import java.util.Properties;
 import java.util.function.Consumer;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.DelegateEndpoint;
-import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.NamedNode;
 import org.apache.camel.model.ExpressionNode;
@@ -61,7 +59,8 @@ public class LwModelToYAMLDumper implements ModelToYAMLDumper {
 
     @Override
     public String dumpModelAsYaml(
-            CamelContext context, NamedNode definition, boolean resolvePlaceholders, boolean resolveDelegateEndpoints)
+            CamelContext context, NamedNode definition, boolean resolvePlaceholders,
+            boolean uriAsParameters)
             throws Exception {
         Properties properties = new Properties();
         Map<String, String> namespaces = new LinkedHashMap<>();
@@ -119,18 +118,8 @@ public class LwModelToYAMLDumper implements ModelToYAMLDumper {
 
             @Override
             protected void attribute(String name, Object value) throws IOException {
-                if (value != null) {
-                    if (resolveDelegateEndpoints && "uri".equals(name)) {
-                        String uri = resolve(value.toString(), properties);
-                        Endpoint endpoint = context.hasEndpoint(uri);
-                        if (endpoint instanceof DelegateEndpoint) {
-                            endpoint = ((DelegateEndpoint) endpoint).getEndpoint();
-                            value = endpoint.getEndpointUri();
-                        }
-                    }
-                    if (resolvePlaceholders) {
-                        value = resolve(value.toString(), properties);
-                    }
+                if (resolvePlaceholders && value != null) {
+                    value = resolve(value.toString(), properties);
                 }
                 super.attribute(name, value);
             }
@@ -147,6 +136,7 @@ public class LwModelToYAMLDumper implements ModelToYAMLDumper {
                 }
             }
         };
+        writer.setUriAsParameters(uriAsParameters);
 
         // gather all namespaces from the routes or route which is stored on the expression nodes
         if (definition instanceof RouteTemplatesDefinition templates) {
diff --git a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java
index 0ab60e15869..c0b10d10e08 100644
--- a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java
+++ b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java
@@ -58,6 +58,7 @@ public class YamlWriter {
     private boolean routesIsRoot;
     private final Stack<EipModel> models = new Stack<>();
     private String expression;
+    private boolean uriAsParameters;
 
     public YamlWriter(Writer writer) {
         this.writer = writer;
@@ -67,6 +68,10 @@ public class YamlWriter {
         this.catalog.start();
     }
 
+    public void setUriAsParameters(boolean uriAsParameters) {
+        this.uriAsParameters = uriAsParameters;
+    }
+
     public void startElement(String name) throws IOException {
         if ("routes".equals(name)) {
             routesIsRoot = true;
@@ -181,7 +186,7 @@ public class YamlWriter {
         EipModel last = models.isEmpty() ? null : models.peek();
         if (last != null) {
             // uri should be expanded into more human-readable with parameters
-            if ("uri".equals(name) && value != null) {
+            if (uriAsParameters && "uri".equals(name) && value != null) {
                 try {
                     String base = URISupport.stripQuery(value.toString());
                     String query = URISupport.extractQuery(value.toString());
diff --git a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/out/BaseWriter.java b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/out/BaseWriter.java
index 4b751c4bc59..76e9e724482 100644
--- a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/out/BaseWriter.java
+++ b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/out/BaseWriter.java
@@ -33,6 +33,10 @@ public class BaseWriter {
         // namespace is only for XML
     }
 
+    public void setUriAsParameters(boolean uriAsParameters) {
+        this.writer.setUriAsParameters(uriAsParameters);
+    }
+
     public String toYaml() {
         return writer.toYaml();
     }
diff --git a/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java b/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java
index c50e4031b63..ea45413f77f 100644
--- a/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java
+++ b/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java
@@ -61,7 +61,7 @@ public class ModelWriterTest {
         writer.writeRouteDefinition(route);
 
         String out = sw.toString();
-        String expected = IOHelper.loadText(new FileInputStream("src/test/resources/route0.yaml"));
+        String expected = IOHelper.loadText(new FileInputStream("src/test/resources/route0b.yaml"));
         Assertions.assertEquals(expected, out);
     }
 
@@ -272,7 +272,7 @@ public class ModelWriterTest {
         writer.writeRoutesDefinition(routes);
 
         String out = sw.toString();
-        String expected = IOHelper.loadText(new FileInputStream("src/test/resources/route8.yaml"));
+        String expected = IOHelper.loadText(new FileInputStream("src/test/resources/route8b.yaml"));
         Assertions.assertEquals(expected, out);
     }
 
diff --git a/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java b/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterUriAsParametersTest.java
similarity index 96%
copy from core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java
copy to core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterUriAsParametersTest.java
index c50e4031b63..6148224029d 100644
--- a/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterTest.java
+++ b/core/camel-yaml-io/src/test/java/org/apache/camel/yaml/out/ModelWriterUriAsParametersTest.java
@@ -43,12 +43,13 @@ import org.apache.camel.util.IOHelper;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-public class ModelWriterTest {
+public class ModelWriterUriAsParametersTest {
 
     @Test
     public void testTimerLog() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute0");
@@ -69,6 +70,7 @@ public class ModelWriterTest {
     public void testFromTo() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute1");
@@ -90,6 +92,7 @@ public class ModelWriterTest {
     public void testFromSplitTo() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute2");
@@ -116,6 +119,7 @@ public class ModelWriterTest {
     public void testFromAggregateTo() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute3");
@@ -146,6 +150,7 @@ public class ModelWriterTest {
     public void testFromSetBodyTo() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute4");
@@ -167,6 +172,7 @@ public class ModelWriterTest {
     public void testFromLogSetBodyTo() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute5");
@@ -192,6 +198,7 @@ public class ModelWriterTest {
     public void testFromChoice() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute6");
@@ -215,6 +222,7 @@ public class ModelWriterTest {
     public void testFromTryCatch() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         CamelContext context = new DefaultCamelContext();
         context.addRoutes(new RouteBuilder() {
@@ -247,6 +255,7 @@ public class ModelWriterTest {
     public void testTwoRoutes() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RoutesDefinition routes = new RoutesDefinition();
 
@@ -280,6 +289,7 @@ public class ModelWriterTest {
     public void testMarshal() throws Exception {
         StringWriter sw = new StringWriter();
         ModelWriter writer = new ModelWriter(sw);
+        writer.setUriAsParameters(true);
 
         RouteDefinition route = new RouteDefinition();
         route.setId("myRoute9");
diff --git a/core/camel-yaml-io/src/test/resources/route0b.yaml b/core/camel-yaml-io/src/test/resources/route0b.yaml
new file mode 100644
index 00000000000..8bedbf86912
--- /dev/null
+++ b/core/camel-yaml-io/src/test/resources/route0b.yaml
@@ -0,0 +1,10 @@
+- route:
+    id: myRoute0
+    from:
+      uri: timer:yaml?period=1234&includeMetadata=true
+      steps:
+        - setBody:
+            constant:
+              expression: Hello from yaml
+        - log:
+            message: "${body}"
\ No newline at end of file
diff --git a/core/camel-yaml-io/src/test/resources/route8b.yaml b/core/camel-yaml-io/src/test/resources/route8b.yaml
new file mode 100644
index 00000000000..5fed92320d1
--- /dev/null
+++ b/core/camel-yaml-io/src/test/resources/route8b.yaml
@@ -0,0 +1,20 @@
+- route:
+    id: myRoute0
+    from:
+      uri: timer:yaml?period=1234
+      steps:
+        - setBody:
+            constant:
+              expression: Hello from yaml
+        - log:
+            message: "${body}"
+- route:
+    id: myRoute1
+    from:
+      uri: direct:start
+      steps:
+        - to:
+            uri: log:input
+        - to:
+            uri: mock:result
+            pattern: InOut
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
index 926d95992c1..287e9acdcfc 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
@@ -127,6 +127,8 @@ Camel now also include MBeans for `doCatch` and `doFinally` in the tree of proce
 The `ManagedChoiceMBean` have renamed `choiceStatistics` to `extendedInformation`.
 The `ManagedFailoverLoadBalancerMBean` have renamed `exceptionStatistics` to `extendedInformation`.
 
+The `CamelContextMBean` and `CamelRouteMBean` has removed method `dumpRouteAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints)`.
+
 == YAML DSL
 
 The backwards compatible mode Camel 3.14 or older, which allowed to have _steps_ as child to _route_ has been removed.
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index dfb52400226..c748fd242dd 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -309,8 +309,10 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
                 if (dc != null) {
                     String filter = root.getString("filter");
                     String format = root.getString("format");
+                    String uriAsParameters = root.getString("uriAsParameters");
                     JsonObject json
-                            = (JsonObject) dc.call(DevConsole.MediaType.JSON, Map.of("filter", filter, "format", format));
+                            = (JsonObject) dc.call(DevConsole.MediaType.JSON,
+                                    Map.of("filter", filter, "format", format, "uriAsParameters", uriAsParameters));
                     LOG.trace("Updating output file: {}", outputFile);
                     IOHelper.writeText(json.toJson(), outputFile);
                 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java
index 1974a709710..18f3e7ec476 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java
@@ -61,6 +61,10 @@ public class CamelRouteDumpAction extends ActionBaseCommand {
                         description = "To output raw without metadata")
     boolean raw;
 
+    @CommandLine.Option(names = { "--uri-as-parameters" },
+                        description = "Whether to expand URIs into separated key/value parameters (only in use for YAML format)")
+    boolean uriAsParameters;
+
     @CommandLine.Option(names = { "--filter" },
                         description = "Filter route by filename (multiple names can be separated by comma)")
     String filter;
@@ -98,6 +102,7 @@ public class CamelRouteDumpAction extends ActionBaseCommand {
         root.put("action", "route-dump");
         root.put("filter", "*");
         root.put("format", format);
+        root.put("uriAsParameters", uriAsParameters);
         File file = getActionFile(Long.toString(pid));
         try {
             IOHelper.writeText(root.toJson(), file);