From e7df5f95515c55fb72040a800c8e8d91f19b6b4c Mon Sep 17 00:00:00 2001 From: Guo Huang Date: Sat, 23 Apr 2016 09:52:17 -0700 Subject: [PATCH] fixed multiple import mapping issue --- .../codegen/languages/GoClientCodegen.java | 39 ++++++++++++++++++- .../src/main/resources/go/api.mustache | 9 ----- .../client/petstore/go/go-petstore/pet_api.go | 2 +- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java index b23ab32163e..37c485ea888 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java @@ -104,7 +104,7 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { importMapping = new HashMap(); importMapping.put("time.Time", "time"); importMapping.put("*os.File", "os"); - importMapping.put("ioutil", "io/ioutil"); + importMapping.put("os", "io/ioutil"); cliOptions.clear(); cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Go package name (convention: lowercase).") @@ -375,6 +375,23 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { iterator.remove(); } + // recursivly add import for mapping one type to multipe imports + List> recursiveImports = (List>) objs.get("imports"); + if (recursiveImports == null) + return objs; + + ListIterator> listIterator = imports.listIterator(); + while (listIterator.hasNext()) { + String _import = listIterator.next().get("import"); + // if the import package happens to be found in the importMapping (key) + // add the corresponding import package to the list + if (importMapping.containsKey(_import)) { + Map newImportMap= new HashMap(); + newImportMap.put("import", importMapping.get(_import)); + listIterator.add(newImportMap); + } + } + return objs; } @@ -389,6 +406,24 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { if (_import.startsWith(prefix)) iterator.remove(); } + + // recursivly add import for mapping one type to multipe imports + List> recursiveImports = (List>) objs.get("imports"); + if (recursiveImports == null) + return objs; + + ListIterator> listIterator = imports.listIterator(); + while (listIterator.hasNext()) { + String _import = listIterator.next().get("import"); + // if the import package happens to be found in the importMapping (key) + // add the corresponding import package to the list + if (importMapping.containsKey(_import)) { + Map newImportMap= new HashMap(); + newImportMap.put("import", importMapping.get(_import)); + listIterator.add(newImportMap); + } + } + return objs; } @@ -405,4 +440,4 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { public void setPackageVersion(String packageVersion) { this.packageVersion = packageVersion; } -} +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index 5b6b9d30ab6..d9302ae4126 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -6,15 +6,6 @@ import ( "fmt" "encoding/json" "errors" - {{#operation}} - {{#hasFormParams}} - {{#formParams}} - {{#isFile}} - "io/ioutil" - {{/isFile}} - {{/formParams}} - {{/hasFormParams}} - {{/operation}} {{#imports}} "{{import}}" {{/imports}} ) diff --git a/samples/client/petstore/go/go-petstore/pet_api.go b/samples/client/petstore/go/go-petstore/pet_api.go index 22df273324c..49ca502151c 100644 --- a/samples/client/petstore/go/go-petstore/pet_api.go +++ b/samples/client/petstore/go/go-petstore/pet_api.go @@ -5,8 +5,8 @@ import ( "fmt" "encoding/json" "errors" - "io/ioutil" "os" + "io/ioutil" ) type PetApi struct {