From 62d103d5012ae8fbe9cef30d58d4a7b1b3e5b4af Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 15 May 2020 09:16:19 +0800 Subject: [PATCH] Minor improvements to `plantuml` doc generator (#6298) * minor improvements to plantuml doc generator * various improvements * fix windows batch file --- README.md | 1 + bin/plantuml-documentation-petstore.sh | 2 +- .../plantuml-documentation-petstore.bat | 2 +- docs/generators.md | 2 +- .../PlantumlDocumentationCodegen.java | 35 +++++++++++++++---- .../org.openapitools.codegen.CodegenConfig | 18 ++++------ .../schemas.mustache | 0 .../petstore/plantuml/schemas.plantuml | 10 ++++++ 8 files changed, 49 insertions(+), 21 deletions(-) mode change 100644 => 100755 bin/plantuml-documentation-petstore.sh rename modules/openapi-generator/src/main/resources/{plantuml-documentation => plantuml}/schemas.mustache (100%) diff --git a/README.md b/README.md index 606ab0e54c79..8fbf415c7029 100644 --- a/README.md +++ b/README.md @@ -885,6 +885,7 @@ Here is a list of template creators: * AsciiDoc: @man-at-home * HTML Doc 2: @jhitchcock * Confluence Wiki: @jhitchcock + * PlantUML: @pburls * Configuration * Apache2: @stkrwork * k6: @mostafa diff --git a/bin/plantuml-documentation-petstore.sh b/bin/plantuml-documentation-petstore.sh old mode 100644 new mode 100755 index 39993e7212f3..82740590056b --- a/bin/plantuml-documentation-petstore.sh +++ b/bin/plantuml-documentation-petstore.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g plantuml -o samples/documentation/petstore/plantuml" +ags="$@ generate -t modules/openapi-generator/src/main/resources/plantuml -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g plantuml -o samples/documentation/petstore/plantuml" java ${JAVA_OPTS} -jar ${executable} ${ags} diff --git a/bin/windows/plantuml-documentation-petstore.bat b/bin/windows/plantuml-documentation-petstore.bat index 0ea5b918e23a..4a0f9d611f25 100644 --- a/bin/windows/plantuml-documentation-petstore.bat +++ b/bin/windows/plantuml-documentation-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate --artifact-id "plantuml-petstore-documentation" -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g plantuml -o samples\documentation\petstore\plantuml +set ags=generate -t modules\openapi-generator\src\main\resources\plantuml -i modules\openapi-generator\src\test\resources\3_0\petstore.yaml -g plantuml -o samples\documentation\petstore\plantuml java %JAVA_OPTS% -jar %executable% %ags% diff --git a/docs/generators.md b/docs/generators.md index a74d15a276c1..205c60f196ef 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -136,7 +136,7 @@ The following generators are available: * [markdown (beta)](generators/markdown.md) * [openapi](generators/openapi.md) * [openapi-yaml](generators/openapi-yaml.md) -* [plantuml](generators/plantuml.md) +* [plantuml (beta)](generators/plantuml.md) ## SCHEMA generators diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java index 295cdd817e53..70edb0a92753 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java @@ -1,14 +1,31 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openapitools.codegen.languages; import org.openapitools.codegen.*; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.util.*; import java.util.stream.Collectors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class PlantumlDocumentationCodegen extends DefaultCodegen implements CodegenConfig { public static final String ALL_OF_SUFFIX = "AllOf"; @@ -29,8 +46,12 @@ public String getHelp() { public PlantumlDocumentationCodegen() { super(); + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.BETA) + .build(); + outputFolder = "generated-code" + File.separator + "plantuml"; - embeddedTemplateDir = templateDir = "plantuml-documentation"; + embeddedTemplateDir = templateDir = "plantuml"; supportingFiles.add(new SupportingFile("schemas.mustache", "", "schemas.plantuml")); } @@ -41,7 +62,7 @@ public Map postProcessSupportingFileData(Map obj List modelsList = (List) models; List codegenModelList = modelsList.stream() .filter(listItem -> listItem instanceof HashMap) - .map(listItem -> (CodegenModel)((HashMap)listItem).get("model")) + .map(listItem -> (CodegenModel) ((HashMap) listItem).get("model")) .collect(Collectors.toList()); List inlineAllOfCodegenModelList = codegenModelList.stream() @@ -118,8 +139,8 @@ private Object createFieldFor(CodegenProperty codegenProperty) { @SuppressWarnings("unchecked") private List> calculateCompositionRelationshipsFrom(List> entities) { - Map>> entityFieldsMap = entities.stream() - .collect(Collectors.toMap(entity -> (String)entity.get("name"), entity -> (List>)entity.get("fields"))); + Map>> entityFieldsMap = entities.stream() + .collect(Collectors.toMap(entity -> (String) entity.get("name"), entity -> (List>) entity.get("fields"))); return entityFieldsMap.entrySet().stream() .map(entry -> createRelationshipsFor(entry.getKey(), entry.getValue())) 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 0ad7647b9a7f..4af3596d0b7f 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 @@ -3,6 +3,7 @@ org.openapitools.codegen.languages.AdaServerCodegen org.openapitools.codegen.languages.AndroidClientCodegen org.openapitools.codegen.languages.Apache2ConfigCodegen org.openapitools.codegen.languages.ApexClientCodegen +org.openapitools.codegen.languages.AsciidocDocumentationCodegen org.openapitools.codegen.languages.AspNetCoreServerCodegen org.openapitools.codegen.languages.AvroSchemaCodegen org.openapitools.codegen.languages.BashClientCodegen @@ -29,6 +30,7 @@ org.openapitools.codegen.languages.ErlangClientCodegen org.openapitools.codegen.languages.ErlangProperCodegen org.openapitools.codegen.languages.ErlangServerCodegen org.openapitools.codegen.languages.FlashClientCodegen +org.openapitools.codegen.languages.FsharpFunctionsServerCodegen org.openapitools.codegen.languages.FsharpGiraffeServerCodegen org.openapitools.codegen.languages.GoClientCodegen org.openapitools.codegen.languages.GoClientExperimentalCodegen @@ -66,6 +68,7 @@ org.openapitools.codegen.languages.JavascriptClosureAngularClientCodegen org.openapitools.codegen.languages.JMeterClientCodegen org.openapitools.codegen.languages.K6ClientCodegen org.openapitools.codegen.languages.LuaClientCodegen +org.openapitools.codegen.languages.MarkdownDocumentationCodegen org.openapitools.codegen.languages.MysqlSchemaCodegen org.openapitools.codegen.languages.NimClientCodegen org.openapitools.codegen.languages.NodeJSServerCodegen @@ -74,6 +77,7 @@ org.openapitools.codegen.languages.ObjcClientCodegen org.openapitools.codegen.languages.OCamlClientCodegen org.openapitools.codegen.languages.OpenAPIGenerator org.openapitools.codegen.languages.OpenAPIYamlGenerator +org.openapitools.codegen.languages.PlantumlDocumentationCodegen org.openapitools.codegen.languages.PerlClientCodegen org.openapitools.codegen.languages.PhpClientCodegen org.openapitools.codegen.languages.PhpLaravelServerCodegen @@ -98,11 +102,13 @@ org.openapitools.codegen.languages.RustClientCodegen org.openapitools.codegen.languages.RustServerCodegen org.openapitools.codegen.languages.ScalatraServerCodegen org.openapitools.codegen.languages.ScalaAkkaClientCodegen +org.openapitools.codegen.languages.ScalaAkkaHttpServerCodegen org.openapitools.codegen.languages.ScalaFinchServerCodegen org.openapitools.codegen.languages.ScalaHttpClientCodegen org.openapitools.codegen.languages.ScalaGatlingCodegen org.openapitools.codegen.languages.ScalaLagomServerCodegen org.openapitools.codegen.languages.ScalaPlayFrameworkServerCodegen +org.openapitools.codegen.languages.ScalaSttpClientCodegen org.openapitools.codegen.languages.ScalazClientCodegen org.openapitools.codegen.languages.SpringCodegen org.openapitools.codegen.languages.StaticDocCodegen @@ -121,14 +127,4 @@ org.openapitools.codegen.languages.TypeScriptInversifyClientCodegen org.openapitools.codegen.languages.TypeScriptJqueryClientCodegen org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen -org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen -org.openapitools.codegen.languages.FsharpGiraffeServerCodegen -org.openapitools.codegen.languages.AsciidocDocumentationCodegen -org.openapitools.codegen.languages.FsharpFunctionsServerCodegen - -org.openapitools.codegen.languages.MarkdownDocumentationCodegen -org.openapitools.codegen.languages.ScalaSttpClientCodegen - -org.openapitools.codegen.languages.ScalaAkkaHttpServerCodegen - -org.openapitools.codegen.languages.PlantumlDocumentationCodegen +org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/plantuml-documentation/schemas.mustache b/modules/openapi-generator/src/main/resources/plantuml/schemas.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/plantuml-documentation/schemas.mustache rename to modules/openapi-generator/src/main/resources/plantuml/schemas.mustache diff --git a/samples/documentation/petstore/plantuml/schemas.plantuml b/samples/documentation/petstore/plantuml/schemas.plantuml index f4d1ddf5e7de..479f8f16ff79 100644 --- a/samples/documentation/petstore/plantuml/schemas.plantuml +++ b/samples/documentation/petstore/plantuml/schemas.plantuml @@ -13,6 +13,16 @@ entity Category { name: String } +entity InlineObject { + name: String + status: String +} + +entity InlineObject1 { + additionalMetadata: String + file: File +} + entity Order { id: Long petId: Long