From dc51b09a7d0ee998f47053a459d6aa12d4aa52e4 Mon Sep 17 00:00:00 2001 From: Tino Fuhrmann Date: Tue, 14 Aug 2018 20:35:40 +0200 Subject: [PATCH 1/2] Added server variable support --- .../openapitools/codegen/CodegenConfig.java | 6 +++ .../openapitools/codegen/CodegenServer.java | 9 +++++ .../codegen/CodegenServerVariable.java | 10 +++++ .../openapitools/codegen/DefaultCodegen.java | 37 +++++++++++++++++++ .../codegen/DefaultGenerator.java | 6 +++ .../codegen/utils/URLPathUtils.java | 2 +- 6 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index e91d00d4ce33..61b98db1bef6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.oas.models.servers.ServerVariable; import java.util.List; import java.util.Map; @@ -113,6 +115,10 @@ public interface CodegenConfig { List fromSecurity(Map schemas); + List fromServers(List servers); + + List fromServerVariables(Map variables); + Set defaultIncludes(); Map typeMapping(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java new file mode 100644 index 000000000000..c0a3eead3842 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java @@ -0,0 +1,9 @@ +package org.openapitools.codegen; + +import java.util.List; + +public class CodegenServer { + public String url; + public String description; + public List variables; +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java new file mode 100644 index 000000000000..d7e065a516e1 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java @@ -0,0 +1,10 @@ +package org.openapitools.codegen; + +import java.util.List; + +public class CodegenServerVariable { + public String name; + public String defaultValue; + public String description; + public List enumValues; +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 46790890a855..6d61d2555be2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -43,6 +43,8 @@ import io.swagger.v3.oas.models.security.OAuthFlow; import io.swagger.v3.oas.models.security.OAuthFlows; import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.oas.models.servers.ServerVariable; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.apache.commons.lang3.ObjectUtils; @@ -64,6 +66,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -4588,4 +4591,38 @@ public void generateYAMLSpecFile(Map objs) { public boolean isDataTypeString(String dataType) { return "String".equals(dataType); } + + @Override + public List fromServers(List servers) { + if (servers == null) { + return Collections.emptyList(); + } + List codegenServers = new LinkedList<>(); + for (Server server: servers) { + CodegenServer cs = new CodegenServer(); + cs.description = server.getDescription(); + cs.url = server.getUrl(); + cs.variables = this.fromServerVariables(server.getVariables()); + codegenServers.add(cs); + } + return codegenServers; + } + + @Override + public List fromServerVariables(Map variables) { + if (variables == null) { + return Collections.emptyList(); + } + List codegenServerVariables = new LinkedList<>(); + for (Entry variableEntry: variables.entrySet()) { + CodegenServerVariable codegenServerVariable = new CodegenServerVariable(); + ServerVariable variable = variableEntry.getValue(); + codegenServerVariable.defaultValue = variable.getDefault(); + codegenServerVariable.description = variable.getDescription(); + codegenServerVariable.enumValues = variable.getEnum(); + codegenServerVariable.name = variableEntry.getKey(); + codegenServerVariables.add(codegenServerVariable); + } + return codegenServerVariables; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 1ba9611cfd36..73cb84ba1c99 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -753,6 +753,12 @@ private Map buildSupportFileBundle(List allOperations, L bundle.put("authMethods", authMethods); bundle.put("hasAuthMethods", true); } + + List servers = config.fromServers(openAPI.getServers()); + if (servers != null && !servers.isEmpty()) { + bundle.put("servers", servers); + bundle.put("hasServers", true); + } if (openAPI.getExternalDocs() != null) { bundle.put("externalDocs", openAPI.getExternalDocs()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java index 91aba80d82c9..fdfa6fdfd6bc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java @@ -50,7 +50,7 @@ public static URL getServerURL(OpenAPI openAPI) { return getServerURL(servers.get(0)); } - static URL getServerURL(final Server server) { + public static URL getServerURL(final Server server) { String url = server.getUrl(); ServerVariables variables = server.getVariables(); if(variables == null) { From 0eaa465bfc777f31840f51f5e4e628b1fef33c7e Mon Sep 17 00:00:00 2001 From: Tino Fuhrmann Date: Tue, 14 Aug 2018 22:44:25 +0200 Subject: [PATCH 2/2] Replaced tabs with 4 spaces --- .../openapitools/codegen/CodegenServer.java | 6 +- .../codegen/CodegenServerVariable.java | 8 +-- .../openapitools/codegen/DefaultCodegen.java | 66 +++++++++---------- .../codegen/DefaultGenerator.java | 4 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java index c0a3eead3842..0708d4407fc2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServer.java @@ -3,7 +3,7 @@ import java.util.List; public class CodegenServer { - public String url; - public String description; - public List variables; + public String url; + public String description; + public List variables; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java index d7e065a516e1..15e9db55b67a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenServerVariable.java @@ -3,8 +3,8 @@ import java.util.List; public class CodegenServerVariable { - public String name; - public String defaultValue; - public String description; - public List enumValues; + public String name; + public String defaultValue; + public String description; + public List enumValues; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 6d61d2555be2..8e1b5ea349b9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -4592,37 +4592,37 @@ public boolean isDataTypeString(String dataType) { return "String".equals(dataType); } - @Override - public List fromServers(List servers) { - if (servers == null) { - return Collections.emptyList(); - } - List codegenServers = new LinkedList<>(); - for (Server server: servers) { - CodegenServer cs = new CodegenServer(); - cs.description = server.getDescription(); - cs.url = server.getUrl(); - cs.variables = this.fromServerVariables(server.getVariables()); - codegenServers.add(cs); - } - return codegenServers; - } - - @Override - public List fromServerVariables(Map variables) { - if (variables == null) { - return Collections.emptyList(); - } - List codegenServerVariables = new LinkedList<>(); - for (Entry variableEntry: variables.entrySet()) { - CodegenServerVariable codegenServerVariable = new CodegenServerVariable(); - ServerVariable variable = variableEntry.getValue(); - codegenServerVariable.defaultValue = variable.getDefault(); - codegenServerVariable.description = variable.getDescription(); - codegenServerVariable.enumValues = variable.getEnum(); - codegenServerVariable.name = variableEntry.getKey(); - codegenServerVariables.add(codegenServerVariable); - } - return codegenServerVariables; - } + @Override + public List fromServers(List servers) { + if (servers == null) { + return Collections.emptyList(); + } + List codegenServers = new LinkedList<>(); + for (Server server: servers) { + CodegenServer cs = new CodegenServer(); + cs.description = server.getDescription(); + cs.url = server.getUrl(); + cs.variables = this.fromServerVariables(server.getVariables()); + codegenServers.add(cs); + } + return codegenServers; + } + + @Override + public List fromServerVariables(Map variables) { + if (variables == null) { + return Collections.emptyList(); + } + List codegenServerVariables = new LinkedList<>(); + for (Entry variableEntry: variables.entrySet()) { + CodegenServerVariable codegenServerVariable = new CodegenServerVariable(); + ServerVariable variable = variableEntry.getValue(); + codegenServerVariable.defaultValue = variable.getDefault(); + codegenServerVariable.description = variable.getDescription(); + codegenServerVariable.enumValues = variable.getEnum(); + codegenServerVariable.name = variableEntry.getKey(); + codegenServerVariables.add(codegenServerVariable); + } + return codegenServerVariables; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 73cb84ba1c99..3c39b135b95d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -756,8 +756,8 @@ private Map buildSupportFileBundle(List allOperations, L List servers = config.fromServers(openAPI.getServers()); if (servers != null && !servers.isEmpty()) { - bundle.put("servers", servers); - bundle.put("hasServers", true); + bundle.put("servers", servers); + bundle.put("hasServers", true); } if (openAPI.getExternalDocs() != null) {