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

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

commit 4a01937971cd20ef2e8584250254d7358934e486
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Tue Oct 29 14:25:54 2024 +0100

    CAMEL-21391: Add support for <dataFormats> in model to xml dumper
---
 .../org/apache/camel/dsl/xml/io/XmlModelParser.java     | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlModelParser.java
 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlModelParser.java
index 5fe845c438e..daf0ec32705 100644
--- 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlModelParser.java
+++ 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlModelParser.java
@@ -48,6 +48,10 @@ public class XmlModelParser extends ModelParser {
         if (isWithinCamelContext(namespace, name) || 
isAriesBlueprint(namespace)) {
             return true;
         }
+        // support loading embedded <dataFormats> in <camel> XML files
+        if ("dataFormats".equals(name) && isCamelRoot("dataFormats")) {
+            return true;
+        }
         return super.handleUnexpectedElement(namespace, name);
     }
 
@@ -80,4 +84,17 @@ public class XmlModelParser extends ModelParser {
         }
         return false;
     }
+
+    private boolean isCamelRoot(String name) {
+        String[] stack = parser.getNames();
+        for (int i = 0; i < stack.length - 1; i++) {
+            String cur = stack[i];
+            String next = stack[i + 1];
+            if ("camel".equals(cur) && name.equals(next)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }

Reply via email to