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:47 UTC

(camel) 05/15: CAMEL-23985: camel-yaml-dsl - Add validation in Pipe handling for unsupported ref kinds, missing sink endpoint, and empty errorHandler

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 a5311e5553f6c883321e82fe1703520500ff9122
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jul 11 09:52:00 2026 +0200

    CAMEL-23985: camel-yaml-dsl - Add validation in Pipe handling for unsupported ref kinds, missing sink endpoint, and empty errorHandler
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
    Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
 .../org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java   | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

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 197284b6cd11..de4298dc917b 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
@@ -520,7 +520,7 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
 
                 // is there any error handler?
                 MappingNode errorHandler = asMappingNode(nodeAt(root, "/spec/errorHandler"));
-                if (errorHandler != null) {
+                if (errorHandler != null && !errorHandler.getValue().isEmpty()) {
                     // there are 5 different error handlers, which one is it
                     NodeTuple nt = errorHandler.getValue().get(0);
                     String ehName = asText(nt.getKeyNode());
@@ -530,6 +530,10 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
                         // a sink is a dead letter queue
                         DeadLetterChannelDefinition dlcd = new DeadLetterChannelDefinition();
                         MappingNode endpoint = asMappingNode(nodeAt(nt.getValueNode(), "/endpoint"));
+                        if (endpoint == null) {
+                            throw new IllegalArgumentException(
+                                    "Pipe errorHandler sink must have an endpoint defined");
+                        }
                         String dlq = extractCamelEndpointUri(endpoint);
                         dlcd.setDeadLetterUri(dlq);
                         ehf = dlcd;
@@ -604,6 +608,12 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
             uri = extractTupleValue(mn.getValue(), "name");
         } else {
             uri = extractTupleValue(node.getValue(), "uri");
+            if (uri == null && mn != null) {
+                String kind = extractTupleValue(mn.getValue(), "kind");
+                String apiVersion = extractTupleValue(mn.getValue(), "apiVersion");
+                throw new IllegalArgumentException(
+                        "Unsupported Pipe ref kind: " + kind + " (apiVersion: " + apiVersion + ")");
+            }
         }
 
         // properties