From f6572fd2f4874f83d3d6faf38a8231d873f3c019 Mon Sep 17 00:00:00 2001 From: "zaleski.d" Date: Sun, 19 Apr 2020 15:38:28 +0200 Subject: [PATCH] [bug][html2] Fix visibility of body/response schemas (#5643) * 1441 fix visibility of body/response schemas * Handle schemas with array items * Point to template directory in bin script * Regenerate sample Co-authored-by: Jim Schubert --- bin/html2-petstore.sh | 2 +- .../openapitools/codegen/DefaultCodegen.java | 7 + .../main/resources/htmlDocs2/index.mustache | 35 +- .../main/resources/htmlDocs2/paramB.mustache | 5 +- .../html2/.openapi-generator/VERSION | 2 +- samples/documentation/html2/index.html | 664 ++++++++++++------ 6 files changed, 475 insertions(+), 240 deletions(-) diff --git a/bin/html2-petstore.sh b/bin/html2-petstore.sh index 3b82165d1034..d125551e1332 100755 --- a/bin/html2-petstore.sh +++ b/bin/html2-petstore.sh @@ -27,6 +27,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 html2 -o samples/documentation/html2 --additional-properties hideGenerationTimestamp=true $@" +ags="generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g html2 -o samples/documentation/html2 -t modules/openapi-generator/src/main/resources/htmlDocs2/ --additional-properties hideGenerationTimestamp=true $@" java $JAVA_OPTS -jar $executable $ags 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 d75476aa29a6..e6a75981b7f0 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 @@ -5543,6 +5543,8 @@ public CodegenParameter fromRequestBody(RequestBody body, Set imports, S setParameterNullable(codegenParameter, codegenProperty); } + addJsonSchemaForBodyRequestInCaseItsNotPresent(codegenParameter, body); + // set the parameter's example value // should be overridden by lang codegen setParameterExampleValue(codegenParameter, body); @@ -5550,6 +5552,11 @@ public CodegenParameter fromRequestBody(RequestBody body, Set imports, S return codegenParameter; } + private void addJsonSchemaForBodyRequestInCaseItsNotPresent(CodegenParameter codegenParameter, RequestBody body){ + if(codegenParameter.jsonSchema == null) + codegenParameter.jsonSchema = Json.pretty(body); + } + protected void addOption(String key, String description, String defaultValue) { CliOption option = new CliOption(key, description); if (defaultValue != null) diff --git a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache index 1cb04a58a9f9..e82cd10725d7 100644 --- a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache +++ b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache @@ -101,6 +101,31 @@ //Convert elements with "marked" class to markdown processMarked(); }); + + function findNode(id, currentNode) { + return (Object.keys(currentNode)[0] === id) ? currentNode : findNodeInChildren(id, currentNode); + } + + function findNodeInChildren(id, currentNode) { + for (let prop in currentNode) { + if (currentNode.hasOwnProperty(prop)) { + let currentChild = currentNode[prop]; + if (id === prop) { + return currentChild; + } else { + // Search in the current child + if (typeof (currentChild) === 'object') { + let result = findNode(id, currentChild); + if (result !== false) { + return result; + } + } + } + } + } + return false; + } +