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());
