From 37cc22259a5fd0a6741d5f01079d5116b60cb1c0 Mon Sep 17 00:00:00 2001 From: Sheldon Young Date: Tue, 27 Apr 2021 11:23:33 -0700 Subject: [PATCH] [scala-sttp] Compilation failed when URI parameter name is not camelCase, fixes #9345 --- .../languages/ScalaSttpClientCodegen.java | 15 ++++++++++++-- .../codegen/scala/SttpCodegenTest.java | 20 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java index 701be93e47d2..68ae83dc061f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java @@ -37,6 +37,8 @@ import java.io.StringWriter; import java.io.Writer; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static org.openapitools.codegen.utils.StringUtils.camelize; @@ -179,8 +181,17 @@ public String getHelp() { @Override public String encodePath(String input) { - String result = super.encodePath(input); - return result.replace("{", "${"); + String path = super.encodePath(input); + + // The parameter names in the URI must be converted to the same case as + // the method parameter. + StringBuffer buf = new StringBuffer(path.length()); + Matcher matcher = Pattern.compile("[{](.*?)[}]").matcher(path); + while (matcher.find()) { + matcher.appendReplacement(buf, "\\${" + toParamName(matcher.group(0)) + "}"); + } + matcher.appendTail(buf); + return buf.toString(); } @Override diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java new file mode 100644 index 000000000000..a48225430f00 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java @@ -0,0 +1,20 @@ +package org.openapitools.codegen.scala; + +import org.openapitools.codegen.languages.ScalaSttpClientCodegen; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class SttpCodegenTest { + + private final ScalaSttpClientCodegen codegen = new ScalaSttpClientCodegen(); + + @Test + public void encodePath() { + Assert.assertEquals(codegen.encodePath("{user_name}"), "${userName}"); + Assert.assertEquals(codegen.encodePath("{userName}"), "${userName}"); + Assert.assertEquals(codegen.encodePath("{UserName}"), "${userName}"); + Assert.assertEquals(codegen.encodePath("user_name"), "user_name"); + Assert.assertEquals(codegen.encodePath("before/{UserName}/after"), "before/${userName}/after"); + } + +}