diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java new file mode 100644 index 000000000000..9fa09c51afef --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java @@ -0,0 +1,64 @@ +package org.openapitools.codegen.languages; + +import java.io.File; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.openapitools.codegen.*; +import io.swagger.v3.oas.models.*; +import io.swagger.v3.core.util.Json; + +public class OpenAPIGenerator extends DefaultCodegen implements CodegenConfig { + + private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIGenerator.class); + + public OpenAPIGenerator() { + super(); + embeddedTemplateDir = templateDir = "openapi"; + outputFolder = "generated-code/openapi"; + + supportingFiles.add(new SupportingFile("README.md", "", "README.md")); + } + + @Override + public CodegenType getTag() { + return CodegenType.DOCUMENTATION; + } + + @Override + public String getName() { + return "openapi"; + } + + @Override + public String getHelp() { + return "Creates a static openapi.json file (OpenAPI spec v3.0)."; + } + + @Override + public void processOpenAPI(OpenAPI openAPI) { + String swaggerString = Json.pretty(openAPI); + + try { + String outputFile = outputFolder + File.separator + "openapi.json"; + FileUtils.writeStringToFile(new File(outputFile), swaggerString); + LOGGER.info("wrote file to " + outputFile); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + @Override + public String escapeQuotationMark(String input) { + // just return the original string + return input; + } + + @Override + public String escapeUnsafeCharacters(String input) { + // just return the original string + return input; + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java new file mode 100644 index 000000000000..9533a8b263f0 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java @@ -0,0 +1,71 @@ +package org.openapitools.codegen.languages; + +import org.openapitools.codegen.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.io.File; + +public class OpenAPIYamlGenerator extends DefaultCodegen implements CodegenConfig { + public static final String OUTPUT_NAME = "outputFile"; + + private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIYamlGenerator.class); + + protected String outputFile = "openapi.yaml"; + + public OpenAPIYamlGenerator() { + super(); + embeddedTemplateDir = templateDir = "openapi-yaml"; + outputFolder = "generated-code/openapi-yaml"; + cliOptions.add(new CliOption(OUTPUT_NAME, "output filename")); + supportingFiles.add(new SupportingFile("README.md", "", "README.md")); + supportingFiles.add(new SupportingFile("openapi.mustache", + "openapi", + "openapi.yaml")); + } + + @Override + public CodegenType getTag() { + return CodegenType.DOCUMENTATION; + } + + @Override + public String getName() { + return "openapi-yaml"; + } + + @Override + public String getHelp() { + return "Creates a static openapi.yaml file (OpenAPI spec v3)."; + } + + + @Override + public void processOpts() { + super.processOpts(); + if (additionalProperties.containsKey(OUTPUT_NAME)) { + this.outputFile = additionalProperties.get(OUTPUT_NAME).toString(); + } + } + + @Override + public Map postProcessSupportingFileData(Map objs) { + generateYAMLSpecFile(objs); + return super.postProcessSupportingFileData(objs); + } + + + @Override + public String escapeQuotationMark(String input) { + // just return the original string + return input; + } + + @Override + public String escapeUnsafeCharacters(String input) { + // just return the original string + return input; + } + +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 4942ebd58f10..0c2704abd25a 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -51,6 +51,8 @@ org.openapitools.codegen.languages.JMeterCodegen org.openapitools.codegen.languages.LuaClientCodegen org.openapitools.codegen.languages.NodeJSServerCodegen org.openapitools.codegen.languages.ObjcClientCodegen +org.openapitools.codegen.languages.OpenAPIGenerator +org.openapitools.codegen.languages.OpenAPIYamlGenerator org.openapitools.codegen.languages.PerlClientCodegen org.openapitools.codegen.languages.PhpClientCodegen org.openapitools.codegen.languages.PhpLumenServerCodegen diff --git a/modules/openapi-generator/src/main/resources/openapi-yaml/README.md b/modules/openapi-generator/src/main/resources/openapi-yaml/README.md new file mode 100644 index 000000000000..6b0f68482016 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/openapi-yaml/README.md @@ -0,0 +1,2 @@ +# OpenAPI YAML +This is a OpenAPI YAML built by the [openapi-generator](https://github.com/openapitools/openapi-genreator) project. \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/openapi-yaml/openapi.mustache b/modules/openapi-generator/src/main/resources/openapi-yaml/openapi.mustache new file mode 100644 index 000000000000..51ebafb0187d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/openapi-yaml/openapi.mustache @@ -0,0 +1 @@ +{{{openapi-yaml}}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/openapi/README.md b/modules/openapi-generator/src/main/resources/openapi/README.md new file mode 100644 index 000000000000..6c6352fdaef6 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/openapi/README.md @@ -0,0 +1,2 @@ +# OpenAPI JSON +This is a OpenAPI JSON built by the [openapi-generator](https://github.com/openapitools/openapi-genreator) project. \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swagger/README.md b/modules/openapi-generator/src/main/resources/swagger/README.md deleted file mode 100644 index 0c2b69a24dbd..000000000000 --- a/modules/openapi-generator/src/main/resources/swagger/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Swagger JSON -This is a swagger JSON built by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. \ No newline at end of file