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