diff --git a/boat-scaffold/src/main/java/com/backbase/oss/codegen/BoatStaticDocsGenerator.java b/boat-scaffold/src/main/java/com/backbase/oss/codegen/BoatStaticDocsGenerator.java index f801e35fe..e1ee165e2 100644 --- a/boat-scaffold/src/main/java/com/backbase/oss/codegen/BoatStaticDocsGenerator.java +++ b/boat-scaffold/src/main/java/com/backbase/oss/codegen/BoatStaticDocsGenerator.java @@ -2,11 +2,13 @@ import com.backbase.oss.codegen.doc.BoatCodegenParameter; import com.backbase.oss.codegen.doc.BoatCodegenResponse; +import com.backbase.oss.codegen.doc.BoatExample; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.node.ArrayNode; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.examples.Example; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.RequestBody; @@ -21,10 +23,7 @@ import java.io.IOException; import java.nio.charset.Charset; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -65,6 +64,13 @@ public void preprocessOpenAPI(OpenAPI openAPI) { .collect(Collectors.toList())); } + if (openAPI.getComponents().getExamples() != null) { + Set imports = new HashSet<>(); + additionalProperties.put("examples", openAPI.getComponents().getExamples().entrySet().stream() + .map(exampleEntry -> mapComponentExample(imports, exampleEntry)) + .collect(Collectors.toList())); + } + if (openAPI.getPaths() != null) // Ensure single tags for operations openAPI.getPaths().forEach((path, pathItem) -> @@ -84,6 +90,12 @@ private CodegenParameter mapComponentRequestBody(Set imports, java.util. return fromRequestBody(requestBody, imports, name); } + private BoatExample mapComponentExample(Set imports, Map.Entry namedExample) { + String key = namedExample.getKey(); + Example example = namedExample.getValue(); + return new BoatExample(key,"", example , false); + } + private CodegenParameter mapComponentParameter(Set imports, java.util.Map.Entry nameParameter) { Parameter parameter = nameParameter.getValue(); return fromParameter(parameter, imports); diff --git a/boat-scaffold/src/main/templates/boat-marina/api.js.handlebars b/boat-scaffold/src/main/templates/boat-marina/api.js.handlebars index f653bce74..1b121a32a 100644 --- a/boat-scaffold/src/main/templates/boat-marina/api.js.handlebars +++ b/boat-scaffold/src/main/templates/boat-marina/api.js.handlebars @@ -4,6 +4,7 @@ const data = { appDescription: {{json appDescription}}, operations: [], models: {}, + examples: {}, requestBodies: {}, responses: {}, parameters: {}, @@ -28,6 +29,12 @@ const data = { {{/with}} {{/each}} +{{#each examples as |example|}} + {{#with example}} + data.examples["{{name}}"] = {{json .}} + {{/with}} +{{/each}} + {{#each requestBodies}} data["requestBodies"]["{{baseName}}"] = {{{jsonSchema}}}; {{/each}}