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

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

commit e9c4541a91ce75ce4817d499e704299c3933edaa
Author: Croway <[email protected]>
AuthorDate: Tue May 26 18:04:31 2026 +0200

    CAMEL-23621: remove backwards-compatibility bypass and fix raw JsonNode 
headers
---
 .../langchain4j/agent/LangChain4jAgentProducer.java     | 17 +++++++++++++++--
 .../langchain4j/tools/LangChain4jToolsProducer.java     |  2 +-
 .../component/springai/tools/SpringAiToolsEndpoint.java |  2 +-
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java
 
b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java
index f951b6b7e7d7..ae977d6e5bf3 100644
--- 
a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java
+++ 
b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java
@@ -215,12 +215,25 @@ public class LangChain4jAgentProducer extends 
DefaultProducer {
                             JsonNode jsonNode = 
objectMapper.readValue(arguments, JsonNode.class);
                             jsonNode.fieldNames()
                                     .forEachRemaining(name -> {
-                                        if (!allowedParams.isEmpty() && 
!allowedParams.contains(name)) {
+                                        if (!allowedParams.contains(name)) {
                                             LOG.warn("Skipping undeclared tool 
argument '{}' for tool '{}'",
                                                     name, toolName);
                                             return;
                                         }
-                                        exchange.getMessage().setHeader(name, 
jsonNode.get(name));
+                                        JsonNode value = jsonNode.get(name);
+                                        Object headerValue;
+                                        if (value.isInt()) {
+                                            headerValue = value.intValue();
+                                        } else if (value.isLong()) {
+                                            headerValue = value.longValue();
+                                        } else if (value.isDouble()) {
+                                            headerValue = value.doubleValue();
+                                        } else if (value.isBoolean()) {
+                                            headerValue = value.booleanValue();
+                                        } else {
+                                            headerValue = value.asText();
+                                        }
+                                        exchange.getMessage().setHeader(name, 
headerValue);
                                     });
                         }
 
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
 
b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
index 0e68f7d5e937..994df32272ab 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
@@ -185,7 +185,7 @@ public class LangChain4jToolsProducer extends 
DefaultProducer {
                 JsonNode jsonNode = 
objectMapper.readValue(toolExecutionRequest.arguments(), JsonNode.class);
                 jsonNode.fieldNames()
                         .forEachRemaining(name -> {
-                            if (!allowedParams.isEmpty() && 
!allowedParams.contains(name)) {
+                            if (!allowedParams.contains(name)) {
                                 LOG.warn("Skipping undeclared tool argument 
'{}' for tool '{}'",
                                         name, toolName);
                                 return;
diff --git 
a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java
 
b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java
index bd83a25882d4..0be65090015d 100644
--- 
a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java
+++ 
b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java
@@ -137,7 +137,7 @@ public class SpringAiToolsEndpoint extends DefaultEndpoint {
                 Exchange exchange = createExchange();
                 // Set arguments as headers, filtered against declared 
parameters
                 for (Map.Entry<String, Object> entry : args.entrySet()) {
-                    if (!declaredParams.isEmpty() && 
!declaredParams.contains(entry.getKey())) {
+                    if (!declaredParams.contains(entry.getKey())) {
                         continue;
                     }
                     exchange.getMessage().setHeader(entry.getKey(), 
entry.getValue());

Reply via email to