From 6e48cf42477928aa8961c5482e41fa1337e16a56 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 16 Sep 2025 04:01:18 +0200 Subject: [PATCH] [BUG][JAVA] RestTemplate uses hardcoded User-Agent Java-SDK #21972 (#21973) Co-authored-by: Simon Baranov --- .../libraries/resttemplate/ApiClient.mustache | 2 +- .../codegen/java/JavaClientCodegenTest.java | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache index 7ad667931ac..876bf48647d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache @@ -145,7 +145,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // Set default User-Agent. - setUserAgent("Java-SDK"); + setUserAgent("{{{httpUserAgent}}}{{^httpUserAgent}}OpenAPI-Generator/{{{artifactVersion}}}/java{{/httpUserAgent}}"); // Setup authentications (key: authentication name, value: authentication). authentications = new HashMap();{{#authMethods}}{{#isBasic}}{{#isBasicBasic}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 8eed5697e12..fd0e7271c9f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -3151,6 +3151,43 @@ public class JavaClientCodegenTest { } + @Test + public void testRestTemplateWithDefaultUserAgent() { + + final Map files = generateFromContract( + "src/test/resources/3_1/java/petstore.yaml", + JavaClientCodegen.RESTTEMPLATE + ); + + final JavaFileAssert apiClient = JavaFileAssert.assertThat(files.get("ApiClient.java")) + .printFileContent(); + apiClient + .assertMethod("init") + .bodyContainsLines("setUserAgent(\"OpenAPI-Generator/1.0.0/java\");"); + } + + @Test + public void testRestTemplateWithCustomUserAgent() { + + final Path output = newTempFolder(); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setValidateSpec(false) + .setGeneratorName(JAVA_GENERATOR) + .setLibrary(JavaClientCodegen.RESTTEMPLATE) + .setHttpUserAgent("MyAwesomeCustomService/0.0.1") + .setInputSpec("src/test/resources/3_1/java/petstore.yaml") + .setOutputDir(output.toString().replace("\\", "/")); + + final Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate() + .stream().collect(Collectors.toMap(File::getName, Function.identity()));; + + final JavaFileAssert apiClient = JavaFileAssert.assertThat(files.get("ApiClient.java")) + .printFileContent(); + apiClient + .assertMethod("init") + .bodyContainsLines("setUserAgent(\"MyAwesomeCustomService/0.0.1\");"); + } + @Test public void testRestClientWithGeneratedOAuthTokenSuppliers() { final Map files = generateFromContract( @@ -3195,6 +3232,7 @@ public class JavaClientCodegenTest { ); } + @Test public void testRestClientWithUseSingleRequestParameter_issue_19406() { final Path output = newTempFolder();