This is an automated email from the ASF dual-hosted git repository.
xtsong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git
The following commit(s) were added to refs/heads/main by this push:
new 90eaa259 [mcp] Change PromptArgument.required from boolean to Boolean
and default null to false (#583)
90eaa259 is described below
commit 90eaa25971877648add8da2e17efcb7bf0bea8e7
Author: Vino1016 <[email protected]>
AuthorDate: Thu Mar 26 19:20:29 2026 +0800
[mcp] Change PromptArgument.required from boolean to Boolean and default
null to false (#583)
* [FLINK-AGENTS] Change PromptArgument.required from boolean to Boolean and
default null to false (#578)
---
.../apache/flink/agents/integrations/mcp/MCPPrompt.java | 16 ++++++++--------
.../flink/agents/integrations/mcp/MCPPromptTest.java | 10 ++++++++++
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git
a/integrations/mcp/src/main/java/org/apache/flink/agents/integrations/mcp/MCPPrompt.java
b/integrations/mcp/src/main/java/org/apache/flink/agents/integrations/mcp/MCPPrompt.java
index 5fd9085a..e539245a 100644
---
a/integrations/mcp/src/main/java/org/apache/flink/agents/integrations/mcp/MCPPrompt.java
+++
b/integrations/mcp/src/main/java/org/apache/flink/agents/integrations/mcp/MCPPrompt.java
@@ -65,16 +65,16 @@ public class MCPPrompt extends Prompt {
private final String description;
@JsonProperty("required")
- private final boolean required;
+ private final Boolean required;
@JsonCreator
public PromptArgument(
@JsonProperty("name") String name,
@JsonProperty("description") String description,
- @JsonProperty("required") boolean required) {
+ @JsonProperty("required") Boolean required) {
this.name = Objects.requireNonNull(name, "name cannot be null");
this.description = description;
- this.required = required;
+ this.required = required != null && required;
}
public String getName() {
@@ -85,7 +85,7 @@ public class MCPPrompt extends Prompt {
return description;
}
- public boolean isRequired() {
+ public Boolean isRequired() {
return required;
}
@@ -94,9 +94,9 @@ public class MCPPrompt extends Prompt {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PromptArgument that = (PromptArgument) o;
- return required == that.required
- && Objects.equals(name, that.name)
- && Objects.equals(description, that.description);
+ return Objects.equals(name, that.name)
+ && Objects.equals(description, that.description)
+ && Objects.equals(required, that.required);
}
@Override
@@ -193,7 +193,7 @@ public class MCPPrompt extends Prompt {
Map<String, Object> result = new HashMap<>();
for (PromptArgument arg : promptArguments.values()) {
- if (arg.isRequired()) {
+ if (Boolean.TRUE.equals(arg.isRequired())) {
if (arguments == null ||
!arguments.containsKey(arg.getName())) {
throw new IllegalArgumentException(
"Missing required argument: " + arg.getName());
diff --git
a/integrations/mcp/src/test/java/org/apache/flink/agents/integrations/mcp/MCPPromptTest.java
b/integrations/mcp/src/test/java/org/apache/flink/agents/integrations/mcp/MCPPromptTest.java
index 1c0e2f01..4bb49619 100644
---
a/integrations/mcp/src/test/java/org/apache/flink/agents/integrations/mcp/MCPPromptTest.java
+++
b/integrations/mcp/src/test/java/org/apache/flink/agents/integrations/mcp/MCPPromptTest.java
@@ -182,4 +182,14 @@ class MCPPromptTest {
assertThat(prompt.getPromptArguments()).hasSize(1);
assertThat(prompt.getPromptArguments()).doesNotContainKey("arg3");
}
+
+ @Test
+ @DisabledOnJre(JRE.JAVA_11)
+ @DisplayName("Test PromptArgument defaults required to false when null")
+ void testPromptArgumentDefaultsRequiredToFalseWhenNull() {
+ MCPPrompt.PromptArgument arg = new MCPPrompt.PromptArgument("name",
"Name", null);
+
+ // Required should default to false when null
+ assertThat(arg.isRequired()).isFalse();
+ }
}