From c48cddd6408b8ead8db1b62832167978c5d97a70 Mon Sep 17 00:00:00 2001 From: Aidan Date: Sat, 11 Nov 2023 00:10:42 -0800 Subject: [PATCH] [GO] Add support for model name mapping for go (#17023) * Add support for model name mapping for go Signed-off-by: Aidan Jensen * Add model name and filename tests Signed-off-by: Aidan * Use File.separator to make the test platform agnostic Signed-off-by: Aidan --------- Signed-off-by: Aidan Jensen Signed-off-by: Aidan --- .../codegen/languages/AbstractGoCodegen.java | 9 +++++++ .../openapitools/codegen/go/GoModelTest.java | 26 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 50eda6dddad..8b5fd016501 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -280,6 +280,10 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege @Override public String toModelFilename(String name) { + // Obtain the model name from modelNameMapping directly if provided + if (modelNameMapping.containsKey(name)) { + name = modelNameMapping.get(name); + } name = toModel("model_" + name); if (isReservedFilename(name)) { @@ -295,6 +299,11 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } public String toModel(String name, boolean doUnderscore) { + // obtain the name from modelNameMapping directly if provided + if (modelNameMapping.containsKey(name)) { + return modelNameMapping.get(name); + } + if (!StringUtils.isEmpty(modelNamePrefix)) { name = modelNamePrefix + "_" + name; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java index ca3a2f66b6f..f84c74d8ee1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java @@ -30,6 +30,8 @@ import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.io.File; + @SuppressWarnings("static-method") public class GoModelTest { @@ -298,4 +300,28 @@ public class GoModelTest { Assert.assertEquals(cm.name, name); Assert.assertEquals(cm.classname, expectedName); } + + @DataProvider(name = "modelMappedNames") + public static Object[][] mappedNames() { + return new Object[][] { + {"mapped", "Remapped", "model_remapped.go"}, + {"mapped_underscore", "RemappedUnderscore", "model_remapped_underscore.go"}, + }; + } + + @Test(dataProvider = "modelMappedNames", description = "map model names") + public void modelNameMappingsTest(String name, String expectedName, String expectedFilename) { + final Schema model = new Schema(); + final DefaultCodegen codegen = new GoClientCodegen(); + codegen.modelNameMapping().put(name, expectedName); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema(name, model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel(name, model); + + final String fn = codegen.modelFilename("model.mustache", name, ""); + Assert.assertEquals(fn, File.separator + expectedFilename); + + Assert.assertEquals(cm.name, name); + Assert.assertEquals(cm.classname, expectedName); + } }