This is an automated email from the ASF dual-hosted git repository.
apupier pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 2bf28b3c23cf camel-langchain4j-agent - Replace deprecated methods
2bf28b3c23cf is described below
commit 2bf28b3c23cffecc1dcdaeadbc13a253588c4c38
Author: Aurélien Pupier <[email protected]>
AuthorDate: Wed Oct 14 13:50:52 2026 +0200
camel-langchain4j-agent - Replace deprecated methods
camel-langchain4j-agent-api:
- CompositeToolProvider: replace the deprecated
ToolProviderResult.tools() and immediateReturnToolNames() (and
ToolProviderResult.Builder.immediateReturnToolNames(Set)) with
ToolProviderResult.aiServiceTools() and Builder.addAll(Collection).
Each AiServiceTool carries its own ReturnBehavior, so the immediate
return information is preserved when merging providers.
- CompositeToolProviderTest: use Builder.add(spec, executor,
ReturnBehavior.IMMEDIATE) instead of
Builder.immediateReturnToolNames(Set),
and assert through AiServiceTool (toolSpecification(), returnBehavior())
instead of the deprecated tools(), toolSpecificationByName() and
immediateReturnToolNames().
camel-langchain4j-agent:
- LangChain4jAgentConfiguration: replace deprecated
@UriParam(secret = true) with security = "secret" on apiKey.
- LangChain4jAgentMcpToolProviderFilterTest: replace the deprecated
ToolProviderResult.tools() with aiServiceTools(), and the deprecated
CamelTestSupport.isUseAdviceWith() override with
testConfiguration().withUseAdviceWith(true).
- StubMcpClient: McpClient.subscribeToResource(), unsubscribeFromResource()
and setRoots() are deprecated but still abstract, so the stub must keep
implementing them; mark the overrides with
@SuppressWarnings("deprecation").
Co-authored-by: IBM Bob <[email protected]>
Signed-off-by: Aurélien Pupier <[email protected]>
---
.../agent/api/CompositeToolProvider.java | 3 +-
.../agent/api/CompositeToolProviderTest.java | 38 +++++++++++++---------
.../agent/LangChain4jAgentConfiguration.java | 2 +-
.../LangChain4jAgentMcpToolProviderFilterTest.java | 10 +++---
.../langchain4j/agent/support/StubMcpClient.java | 3 ++
5 files changed, 32 insertions(+), 24 deletions(-)
diff --git
a/components/camel-ai/camel-langchain4j-agent-api/src/main/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProvider.java
b/components/camel-ai/camel-langchain4j-agent-api/src/main/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProvider.java
index da50c9c4c3a6..4074726ef6b2 100644
---
a/components/camel-ai/camel-langchain4j-agent-api/src/main/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProvider.java
+++
b/components/camel-ai/camel-langchain4j-agent-api/src/main/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProvider.java
@@ -48,8 +48,7 @@ public class CompositeToolProvider implements ToolProvider {
for (ToolProvider provider : providers) {
ToolProviderResult result = provider.provideTools(request);
- result.tools().forEach(resultBuilder::add);
-
resultBuilder.immediateReturnToolNames(result.immediateReturnToolNames());
+ resultBuilder.addAll(result.aiServiceTools());
}
return resultBuilder.build();
diff --git
a/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProviderTest.java
b/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProviderTest.java
index 907247077c3f..4e5d82a4ddd1 100644
---
a/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProviderTest.java
+++
b/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/CompositeToolProviderTest.java
@@ -18,10 +18,11 @@ package org.apache.camel.component.langchain4j.agent.api;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
+import dev.langchain4j.agent.tool.ReturnBehavior;
import dev.langchain4j.agent.tool.ToolSpecification;
import dev.langchain4j.data.message.UserMessage;
+import dev.langchain4j.service.tool.AiServiceTool;
import dev.langchain4j.service.tool.ToolExecutor;
import dev.langchain4j.service.tool.ToolProvider;
import dev.langchain4j.service.tool.ToolProviderRequest;
@@ -50,8 +51,8 @@ public class CompositeToolProviderTest {
ToolProviderResult result = composite.provideTools(DUMMY_REQUEST);
assertNotNull(result);
- assertEquals(1, result.tools().size());
- assertTrue(result.tools().containsKey(spec));
+ assertEquals(1, result.aiServiceTools().size());
+ assertEquals(spec, toolByName(result, "tool1").toolSpecification());
}
@Test
@@ -71,9 +72,9 @@ public class CompositeToolProviderTest {
ToolProviderResult result = composite.provideTools(DUMMY_REQUEST);
assertNotNull(result);
- assertEquals(2, result.tools().size());
- assertTrue(result.tools().containsKey(spec1));
- assertTrue(result.tools().containsKey(spec2));
+ assertEquals(2, result.aiServiceTools().size());
+ assertEquals(spec1, toolByName(result, "tool1").toolSpecification());
+ assertEquals(spec2, toolByName(result, "tool2").toolSpecification());
}
@Test
@@ -82,7 +83,7 @@ public class CompositeToolProviderTest {
ToolProviderResult result = composite.provideTools(DUMMY_REQUEST);
assertNotNull(result);
- assertTrue(result.tools().isEmpty());
+ assertTrue(result.aiServiceTools().isEmpty());
}
@Test
@@ -110,22 +111,20 @@ public class CompositeToolProviderTest {
ToolSpecification spec2 =
ToolSpecification.builder().name("tool2").description("Tool 2").build();
ToolProvider provider1 = request -> ToolProviderResult.builder()
- .add(spec1, NOOP_EXECUTOR)
- .immediateReturnToolNames(Set.of("tool1"))
+ .add(spec1, NOOP_EXECUTOR, ReturnBehavior.IMMEDIATE)
.build();
ToolProvider provider2 = request -> ToolProviderResult.builder()
- .add(spec2, NOOP_EXECUTOR)
- .immediateReturnToolNames(Set.of("tool2"))
+ .add(spec2, NOOP_EXECUTOR, ReturnBehavior.IMMEDIATE)
.build();
CompositeToolProvider composite = new
CompositeToolProvider(List.of(provider1, provider2));
ToolProviderResult result = composite.provideTools(DUMMY_REQUEST);
assertNotNull(result);
- assertEquals(2, result.tools().size());
- assertTrue(result.immediateReturnToolNames().contains("tool1"));
- assertTrue(result.immediateReturnToolNames().contains("tool2"));
+ assertEquals(2, result.aiServiceTools().size());
+ assertEquals(ReturnBehavior.IMMEDIATE, toolByName(result,
"tool1").returnBehavior());
+ assertEquals(ReturnBehavior.IMMEDIATE, toolByName(result,
"tool2").returnBehavior());
}
@Test
@@ -142,7 +141,14 @@ public class CompositeToolProviderTest {
ToolProviderResult result = composite.provideTools(DUMMY_REQUEST);
assertNotNull(result);
- assertEquals(1, result.tools().size());
- assertTrue(result.tools().containsKey(spec1));
+ assertEquals(1, result.aiServiceTools().size());
+ assertEquals(spec1, toolByName(result, "tool1").toolSpecification());
+ }
+
+ private static AiServiceTool toolByName(ToolProviderResult result, String
name) {
+ return result.aiServiceTools().stream()
+ .filter(t -> name.equals(t.name()))
+ .findFirst()
+ .orElseThrow();
}
}
diff --git
a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentConfiguration.java
b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentConfiguration.java
index 174afd7ae533..ec195ce7802e 100644
---
a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentConfiguration.java
+++
b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentConfiguration.java
@@ -58,7 +58,7 @@ public class LangChain4jAgentConfiguration implements
Cloneable {
private String modelName;
@UriParam(label = "model")
private String baseUrl;
- @UriParam(label = "model,security", secret = true)
+ @UriParam(label = "model,security", security = "secret")
private String apiKey;
@UriParam(label = "model")
private Double temperature;
diff --git
a/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentMcpToolProviderFilterTest.java
b/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentMcpToolProviderFilterTest.java
index 1b029e156dcb..71726e27845b 100644
---
a/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentMcpToolProviderFilterTest.java
+++
b/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentMcpToolProviderFilterTest.java
@@ -25,6 +25,7 @@ import dev.langchain4j.agent.tool.ToolSpecification;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.mcp.client.McpClient;
import dev.langchain4j.service.Result;
+import dev.langchain4j.service.tool.AiServiceTool;
import dev.langchain4j.service.tool.ToolProvider;
import dev.langchain4j.service.tool.ToolProviderRequest;
import dev.langchain4j.service.tool.ToolProviderResult;
@@ -67,9 +68,8 @@ class LangChain4jAgentMcpToolProviderFilterTest extends
CamelTestSupport {
capturedToolProvider.set(null);
}
- @Override
- public boolean isUseAdviceWith() {
- return true;
+ LangChain4jAgentMcpToolProviderFilterTest() {
+ testConfiguration().withUseAdviceWith(true);
}
@Override
@@ -169,8 +169,8 @@ class LangChain4jAgentMcpToolProviderFilterTest extends
CamelTestSupport {
private static Set<String> toolNames(ToolProvider toolProvider) {
assertThat(toolProvider).isNotNull();
ToolProviderResult result = toolProvider.provideTools(TOOL_REQUEST);
- return result.tools().keySet().stream()
- .map(ToolSpecification::name)
+ return result.aiServiceTools().stream()
+ .map(AiServiceTool::name)
.collect(Collectors.toSet());
}
}
diff --git
a/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/support/StubMcpClient.java
b/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/support/StubMcpClient.java
index 897a85cb3665..91eafa210724 100644
---
a/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/support/StubMcpClient.java
+++
b/components/camel-ai/camel-langchain4j-agent/src/test/java/org/apache/camel/component/langchain4j/agent/support/StubMcpClient.java
@@ -105,11 +105,13 @@ public final class StubMcpClient implements McpClient {
}
@Override
+ @SuppressWarnings("deprecation")
public void subscribeToResource(String uri) {
throw new UnsupportedOperationException("Not needed for filter tests");
}
@Override
+ @SuppressWarnings("deprecation")
public void unsubscribeFromResource(String uri) {
throw new UnsupportedOperationException("Not needed for filter tests");
}
@@ -130,6 +132,7 @@ public final class StubMcpClient implements McpClient {
}
@Override
+ @SuppressWarnings("deprecation")
public void setRoots(List<McpRoot> roots) {
// no-op
}