[Java] fix restclient with useJackson3 omitting default HttpMessageConverters (#24587)

Merged
SU
3mo ago
+47-20

PR checklist

  • Read the contribution guidelines.
  • Pull Request title cleanly describes the fix/feature.
  • Code compiles cleanly by running mvn clean install -DskipTests.
  • Added unit tests for the fix/feature.
  • Regenerated sample code via ./bin/generate-samples.sh ./bin/configs/java*.

Description of the Change

When generating the restclient library with useJackson3=true, ApiClient.mustache configures JacksonJsonHttpMessageConverter on HttpMessageConverters.ClientBuilder. I believe builder.registerDefaults() was accidentally omitted here. Without calling registerDefaults(), standard Spring converters (such as ByteArrayHttpMessageConverter, StringHttpMessageConverter, and ResourceHttpMessageConverter) are not registered on the built client.

Adding builder.registerDefaults() inside messageConverters ensures Spring's default converters remain registered alongside Jackson.

Fixes #24587

cc @bbdouglas @s2308 @javier20 @wing328 @jpfinne


Summary by cubic

Fixes missing Spring default HttpMessageConverters in restclient when useJackson3=true by using builder.registerDefaults().withJsonConverter(...), and switches XML to withXmlConverter(...) to prevent duplicates. Restores ByteArray/String/Resource support and avoids duplicate converters. Fixes #24587.

  • Bug Fixes
    • Update ApiClient.mustache to call builder.registerDefaults().withJsonConverter(new JacksonJsonHttpMessageConverter(mapper)) and withXmlConverter(new JacksonXmlHttpMessageConverter(xmlMapper)); add a regression test; regenerate samples.
    • Bump spring-web to 7.0.8 across restclient/resttemplate templates and all Spring Boot 4 samples.