Skip to content

Commit c48cddd

Browse files
authored
[GO] Add support for model name mapping for go (#17023)
* Add support for model name mapping for go Signed-off-by: Aidan Jensen <aidan@artificial.com> * Add model name and filename tests Signed-off-by: Aidan <aidan@artificial.com> * Use File.separator to make the test platform agnostic Signed-off-by: Aidan <aidan@artificial.com> --------- Signed-off-by: Aidan Jensen <aidan@artificial.com> Signed-off-by: Aidan <aidan@artificial.com>
1 parent 92daacd commit c48cddd

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,10 @@ protected boolean isReservedFilename(String name) {
280280

281281
@Override
282282
public String toModelFilename(String name) {
283+
// Obtain the model name from modelNameMapping directly if provided
284+
if (modelNameMapping.containsKey(name)) {
285+
name = modelNameMapping.get(name);
286+
}
283287
name = toModel("model_" + name);
284288

285289
if (isReservedFilename(name)) {
@@ -295,6 +299,11 @@ public String toModel(String name) {
295299
}
296300

297301
public String toModel(String name, boolean doUnderscore) {
302+
// obtain the name from modelNameMapping directly if provided
303+
if (modelNameMapping.containsKey(name)) {
304+
return modelNameMapping.get(name);
305+
}
306+
298307
if (!StringUtils.isEmpty(modelNamePrefix)) {
299308
name = modelNamePrefix + "_" + name;
300309
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.testng.annotations.DataProvider;
3131
import org.testng.annotations.Test;
3232

33+
import java.io.File;
34+
3335
@SuppressWarnings("static-method")
3436
public class GoModelTest {
3537

@@ -298,4 +300,28 @@ public void modelNameTest(String name, String expectedName) {
298300
Assert.assertEquals(cm.name, name);
299301
Assert.assertEquals(cm.classname, expectedName);
300302
}
303+
304+
@DataProvider(name = "modelMappedNames")
305+
public static Object[][] mappedNames() {
306+
return new Object[][] {
307+
{"mapped", "Remapped", "model_remapped.go"},
308+
{"mapped_underscore", "RemappedUnderscore", "model_remapped_underscore.go"},
309+
};
310+
}
311+
312+
@Test(dataProvider = "modelMappedNames", description = "map model names")
313+
public void modelNameMappingsTest(String name, String expectedName, String expectedFilename) {
314+
final Schema model = new Schema();
315+
final DefaultCodegen codegen = new GoClientCodegen();
316+
codegen.modelNameMapping().put(name, expectedName);
317+
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema(name, model);
318+
codegen.setOpenAPI(openAPI);
319+
final CodegenModel cm = codegen.fromModel(name, model);
320+
321+
final String fn = codegen.modelFilename("model.mustache", name, "");
322+
Assert.assertEquals(fn, File.separator + expectedFilename);
323+
324+
Assert.assertEquals(cm.name, name);
325+
Assert.assertEquals(cm.classname, expectedName);
326+
}
301327
}

0 commit comments

Comments
 (0)