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 2026/07/11 08:41:51 UTC

(camel) 09/15: CAMEL-23989: camel-yaml-dsl - Fix nodeAt() matching later pointer segments at wrong depth

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

davsclaus pushed a commit to branch worktree-snazzy-petting-map
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 36ef79bd15651ac0dfc8a22395f4569234278ddd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jul 11 09:59:04 2026 +0200

    CAMEL-23989: camel-yaml-dsl - Fix nodeAt() matching later pointer segments at wrong depth
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
    Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
 .../apache/camel/dsl/yaml/common/YamlDeserializerSupport.java    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
index 0c661f570e2c..4b2bef9d6b5d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlDeserializerSupport.java
@@ -418,17 +418,24 @@ public class YamlDeserializerSupport {
 
         MappingNode mn = asMappingNode(root);
         for (String path : pointer.split("/")) {
+            if (path.isEmpty()) {
+                continue;
+            }
             for (NodeTuple child : mn.getValue()) {
                 if (child.getKeyNode() instanceof ScalarNode) {
                     ScalarNode scalar = (ScalarNode) child.getKeyNode();
                     if (scalar.getValue().equals(path)) {
-                        String next = pointer.substring(path.length() + 1);
+                        String next = pointer.substring(pointer.indexOf(path) + path.length());
+                        if (next.startsWith("/")) {
+                            next = next.substring(1);
+                        }
                         return ObjectHelper.isEmpty(next)
                                 ? child.getValueNode()
                                 : nodeAt(child.getValueNode(), next);
                     }
                 }
             }
+            return null;
         }
 
         return null;