From 3a4de35316149451fb0b7b64cc18887e02adc973 Mon Sep 17 00:00:00 2001 From: Sheldon Young <sheldon@softdev.ca> Date: Mon, 26 Apr 2021 15:42:40 -0700 Subject: [PATCH 1/2] [scala-sttp] Compilation failed when URI parameter name is not camelCase, fixes #9345 --- .../languages/ScalaSttpClientCodegen.java | 15 ++++++++++++-- .../project/build.properties.mustache | 2 +- .../codegen/scala/SttpCodegenTest.java | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 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 701be93e47d..68ae83dc061 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.IOException; 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 class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code @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/main/resources/scala-sttp/project/build.properties.mustache b/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache index 654fe70c42c..e67343ae796 100644 --- a/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache +++ b/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache @@ -1 +1 @@ -sbt.version=1.3.12 +sbt.version=1.5.0 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 00000000000..a48225430f0 --- /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"); + } + +} -- GitLab From 7fc2f33860d3f64873c735a58848841350c1f521 Mon Sep 17 00:00:00 2001 From: Sheldon Young <sheldon@softdev.ca> Date: Mon, 26 Apr 2021 16:19:24 -0700 Subject: [PATCH 2/2] Delete build.properties.mustache Unsure why .moustache is appended. --- .../main/resources/scala-sttp/project/build.properties.mustache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache diff --git a/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache b/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache deleted file mode 100644 index e67343ae796..00000000000 --- a/modules/openapi-generator/src/main/resources/scala-sttp/project/build.properties.mustache +++ /dev/null @@ -1 +0,0 @@ -sbt.version=1.5.0 -- GitLab