From a56573956b858ac6fb5164b6f88ffa4431314a7c Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Thu, 10 Apr 2025 16:46:52 +0800 Subject: [PATCH] Remove unnecessary @JsonProperty Jackson support Java records long time ago. >> Note that as of 2.6, this property is only used for Creator Properties, to ensure existence of property value in JSON: for other properties (ones injected using a setter or mutable field), no validation is performed. Signed-off-by: Yanming Zhou --- .../WeatherRequest.java | 8 ---- .../mcp/sample/server/WeatherApiClient.java | 37 +++++++++---------- .../ai/mcp/sample/server/WeatherService.java | 37 +++++++++---------- .../ai/mcp/sample/server/WeatherService.java | 37 +++++++++---------- .../ai/mcp/sample/server/WeatherService.java | 37 +++++++++---------- .../ai/mcp/sample/server/WeatherService.java | 37 +++++++++---------- 6 files changed, 90 insertions(+), 103 deletions(-) diff --git a/misc/spring-ai-java-function-callback/src/main/java/com/example/java_ai_function_callback/WeatherRequest.java b/misc/spring-ai-java-function-callback/src/main/java/com/example/java_ai_function_callback/WeatherRequest.java index 3227353..9b2134c 100644 --- a/misc/spring-ai-java-function-callback/src/main/java/com/example/java_ai_function_callback/WeatherRequest.java +++ b/misc/spring-ai-java-function-callback/src/main/java/com/example/java_ai_function_callback/WeatherRequest.java @@ -2,29 +2,21 @@ import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonClassDescription("Weather API request") public class WeatherRequest { - public WeatherRequest() { - } - - @JsonProperty(required = true, value = "location") @JsonPropertyDescription("The city and state e.g. San Francisco, CA") private String location = ""; - @JsonProperty(required = true, value = "lat") @JsonPropertyDescription("The city latitude") private double lat = 0.0; - @JsonProperty(required = true, value = "lon") @JsonPropertyDescription("The city longitude") private double lon = 0.0; - @JsonProperty(required = true, value = "unit") @JsonPropertyDescription("Temperature unit") private SpringAiJavaFunctionCallbackApplication.Unit unit = SpringAiJavaFunctionCallbackApplication.Unit.C; diff --git a/model-context-protocol/weather/manual-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherApiClient.java b/model-context-protocol/weather/manual-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherApiClient.java index 171456f..69323e8 100644 --- a/model-context-protocol/weather/manual-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherApiClient.java +++ b/model-context-protocol/weather/manual-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherApiClient.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.tool.annotation.Tool; import org.springframework.web.client.RestClient; @@ -48,36 +47,36 @@ public WeatherApiClient() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Points(@JsonProperty("properties") Props properties) { + public record Points(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("forecast") String forecast) { + public record Props(String forecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Forecast(@JsonProperty("properties") Props properties) { + public record Forecast(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("periods") List periods) { + public record Props(List periods) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Period(@JsonProperty("number") Integer number, @JsonProperty("name") String name, - @JsonProperty("startTime") String startTime, @JsonProperty("endTime") String endTime, - @JsonProperty("isDaytime") Boolean isDayTime, @JsonProperty("temperature") Integer temperature, - @JsonProperty("temperatureUnit") String temperatureUnit, - @JsonProperty("temperatureTrend") String temperatureTrend, - @JsonProperty("probabilityOfPrecipitation") Map probabilityOfPrecipitation, - @JsonProperty("windSpeed") String windSpeed, @JsonProperty("windDirection") String windDirection, - @JsonProperty("icon") String icon, @JsonProperty("shortForecast") String shortForecast, - @JsonProperty("detailedForecast") String detailedForecast) { + public record Period(Integer number, String name, + String startTime, String endTime, + Boolean isDayTime, Integer temperature, + String temperatureUnit, + String temperatureTrend, + Map probabilityOfPrecipitation, + String windSpeed, String windDirection, + String icon, String shortForecast, + String detailedForecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Alert(@JsonProperty("features") List features) { + public record Alert(List features) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Feature(@JsonProperty("properties") Properties properties) { + public record Feature(Properties properties) { public String toText() { return String.format(""" @@ -92,9 +91,9 @@ public String toText() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Properties(@JsonProperty("event") String event, @JsonProperty("areaDesc") String areaDesc, - @JsonProperty("severity") String severity, @JsonProperty("description") String description, - @JsonProperty("instruction") String instruction) { + public record Properties(String event, String areaDesc, + String severity, String description, + String instruction) { } } diff --git a/model-context-protocol/weather/starter-stdio-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java b/model-context-protocol/weather/starter-stdio-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java index 2c08e0b..5bed84e 100644 --- a/model-context-protocol/weather/starter-stdio-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java +++ b/model-context-protocol/weather/starter-stdio-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.tool.annotation.Tool; import org.springframework.ai.tool.annotation.ToolParam; @@ -45,42 +44,42 @@ public WeatherService() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Points(@JsonProperty("properties") Props properties) { + public record Points(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("forecast") String forecast) { + public record Props(String forecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Forecast(@JsonProperty("properties") Props properties) { + public record Forecast(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("periods") List periods) { + public record Props(List periods) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Period(@JsonProperty("number") Integer number, @JsonProperty("name") String name, - @JsonProperty("startTime") String startTime, @JsonProperty("endTime") String endTime, - @JsonProperty("isDaytime") Boolean isDayTime, @JsonProperty("temperature") Integer temperature, - @JsonProperty("temperatureUnit") String temperatureUnit, - @JsonProperty("temperatureTrend") String temperatureTrend, - @JsonProperty("probabilityOfPrecipitation") Map probabilityOfPrecipitation, - @JsonProperty("windSpeed") String windSpeed, @JsonProperty("windDirection") String windDirection, - @JsonProperty("icon") String icon, @JsonProperty("shortForecast") String shortForecast, - @JsonProperty("detailedForecast") String detailedForecast) { + public record Period(Integer number, String name, + String startTime, String endTime, + Boolean isDayTime, Integer temperature, + String temperatureUnit, + String temperatureTrend, + Map probabilityOfPrecipitation, + String windSpeed, String windDirection, + String icon, String shortForecast, + String detailedForecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Alert(@JsonProperty("features") List features) { + public record Alert(List features) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Feature(@JsonProperty("properties") Properties properties) { + public record Feature(Properties properties) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Properties(@JsonProperty("event") String event, @JsonProperty("areaDesc") String areaDesc, - @JsonProperty("severity") String severity, @JsonProperty("description") String description, - @JsonProperty("instruction") String instruction) { + public record Properties(String event, String areaDesc, + String severity, String description, + String instruction) { } } diff --git a/model-context-protocol/weather/starter-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java b/model-context-protocol/weather/starter-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java index 5966ea1..3da48e9 100644 --- a/model-context-protocol/weather/starter-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java +++ b/model-context-protocol/weather/starter-webflux-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.tool.annotation.Tool; import org.springframework.stereotype.Service; @@ -44,42 +43,42 @@ public WeatherService() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Points(@JsonProperty("properties") Props properties) { + public record Points(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("forecast") String forecast) { + public record Props(String forecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Forecast(@JsonProperty("properties") Props properties) { + public record Forecast(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("periods") List periods) { + public record Props(List periods) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Period(@JsonProperty("number") Integer number, @JsonProperty("name") String name, - @JsonProperty("startTime") String startTime, @JsonProperty("endTime") String endTime, - @JsonProperty("isDaytime") Boolean isDayTime, @JsonProperty("temperature") Integer temperature, - @JsonProperty("temperatureUnit") String temperatureUnit, - @JsonProperty("temperatureTrend") String temperatureTrend, - @JsonProperty("probabilityOfPrecipitation") Map probabilityOfPrecipitation, - @JsonProperty("windSpeed") String windSpeed, @JsonProperty("windDirection") String windDirection, - @JsonProperty("icon") String icon, @JsonProperty("shortForecast") String shortForecast, - @JsonProperty("detailedForecast") String detailedForecast) { + public record Period(Integer number, String name, + String startTime, String endTime, + Boolean isDayTime, Integer temperature, + String temperatureUnit, + String temperatureTrend, + Map probabilityOfPrecipitation, + String windSpeed, String windDirection, + String icon, String shortForecast, + String detailedForecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Alert(@JsonProperty("features") List features) { + public record Alert(List features) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Feature(@JsonProperty("properties") Properties properties) { + public record Feature(Properties properties) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Properties(@JsonProperty("event") String event, @JsonProperty("areaDesc") String areaDesc, - @JsonProperty("severity") String severity, @JsonProperty("description") String description, - @JsonProperty("instruction") String instruction) { + public record Properties(String event, String areaDesc, + String severity, String description, + String instruction) { } } diff --git a/model-context-protocol/weather/starter-webmvc-oauth2-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java b/model-context-protocol/weather/starter-webmvc-oauth2-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java index 8a243eb..4e1c9ea 100644 --- a/model-context-protocol/weather/starter-webmvc-oauth2-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java +++ b/model-context-protocol/weather/starter-webmvc-oauth2-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.tool.annotation.Tool; import org.springframework.stereotype.Service; @@ -44,42 +43,42 @@ public WeatherService() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Points(@JsonProperty("properties") Props properties) { + public record Points(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("forecast") String forecast) { + public record Props(String forecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Forecast(@JsonProperty("properties") Props properties) { + public record Forecast(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("periods") List periods) { + public record Props(List periods) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Period(@JsonProperty("number") Integer number, @JsonProperty("name") String name, - @JsonProperty("startTime") String startTime, @JsonProperty("endTime") String endTime, - @JsonProperty("isDaytime") Boolean isDayTime, @JsonProperty("temperature") Integer temperature, - @JsonProperty("temperatureUnit") String temperatureUnit, - @JsonProperty("temperatureTrend") String temperatureTrend, - @JsonProperty("probabilityOfPrecipitation") Map probabilityOfPrecipitation, - @JsonProperty("windSpeed") String windSpeed, @JsonProperty("windDirection") String windDirection, - @JsonProperty("icon") String icon, @JsonProperty("shortForecast") String shortForecast, - @JsonProperty("detailedForecast") String detailedForecast) { + public record Period(Integer number, String name, + String startTime, String endTime, + Boolean isDayTime, Integer temperature, + String temperatureUnit, + String temperatureTrend, + Map probabilityOfPrecipitation, + String windSpeed, String windDirection, + String icon, String shortForecast, + String detailedForecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Alert(@JsonProperty("features") List features) { + public record Alert(List features) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Feature(@JsonProperty("properties") Properties properties) { + public record Feature(Properties properties) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Properties(@JsonProperty("event") String event, @JsonProperty("areaDesc") String areaDesc, - @JsonProperty("severity") String severity, @JsonProperty("description") String description, - @JsonProperty("instruction") String instruction) { + public record Properties(String event, String areaDesc, + String severity, String description, + String instruction) { } } diff --git a/model-context-protocol/weather/starter-webmvc-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java b/model-context-protocol/weather/starter-webmvc-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java index 5966ea1..3da48e9 100644 --- a/model-context-protocol/weather/starter-webmvc-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java +++ b/model-context-protocol/weather/starter-webmvc-server/src/main/java/org/springframework/ai/mcp/sample/server/WeatherService.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.tool.annotation.Tool; import org.springframework.stereotype.Service; @@ -44,42 +43,42 @@ public WeatherService() { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Points(@JsonProperty("properties") Props properties) { + public record Points(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("forecast") String forecast) { + public record Props(String forecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Forecast(@JsonProperty("properties") Props properties) { + public record Forecast(Props properties) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Props(@JsonProperty("periods") List periods) { + public record Props(List periods) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Period(@JsonProperty("number") Integer number, @JsonProperty("name") String name, - @JsonProperty("startTime") String startTime, @JsonProperty("endTime") String endTime, - @JsonProperty("isDaytime") Boolean isDayTime, @JsonProperty("temperature") Integer temperature, - @JsonProperty("temperatureUnit") String temperatureUnit, - @JsonProperty("temperatureTrend") String temperatureTrend, - @JsonProperty("probabilityOfPrecipitation") Map probabilityOfPrecipitation, - @JsonProperty("windSpeed") String windSpeed, @JsonProperty("windDirection") String windDirection, - @JsonProperty("icon") String icon, @JsonProperty("shortForecast") String shortForecast, - @JsonProperty("detailedForecast") String detailedForecast) { + public record Period(Integer number, String name, + String startTime, String endTime, + Boolean isDayTime, Integer temperature, + String temperatureUnit, + String temperatureTrend, + Map probabilityOfPrecipitation, + String windSpeed, String windDirection, + String icon, String shortForecast, + String detailedForecast) { } } @JsonIgnoreProperties(ignoreUnknown = true) - public record Alert(@JsonProperty("features") List features) { + public record Alert(List features) { @JsonIgnoreProperties(ignoreUnknown = true) - public record Feature(@JsonProperty("properties") Properties properties) { + public record Feature(Properties properties) { } @JsonIgnoreProperties(ignoreUnknown = true) - public record Properties(@JsonProperty("event") String event, @JsonProperty("areaDesc") String areaDesc, - @JsonProperty("severity") String severity, @JsonProperty("description") String description, - @JsonProperty("instruction") String instruction) { + public record Properties(String event, String areaDesc, + String severity, String description, + String instruction) { } }