From 1c157a28474d532c643d29883d6b10ea3f3b7130 Mon Sep 17 00:00:00 2001 From: Beppe Catanese <1771700+gcatanese@users.noreply.github.com> Date: Sat, 28 Jan 2023 05:42:00 +0100 Subject: [PATCH] Support examples in Response Content (#14336) * Add examples map and overload constructor * Create CodegenMediaType with examples * Add test --- .../openapitools/codegen/CodegenMediaType.java | 13 +++++++++++++ .../openapitools/codegen/DefaultCodegen.java | 2 +- .../codegen/DefaultCodegenTest.java | 3 +++ .../src/test/resources/3_0/content-data.yaml | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenMediaType.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenMediaType.java index 2728bc632fa..12ebcb0cff7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenMediaType.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenMediaType.java @@ -1,13 +1,17 @@ package org.openapitools.codegen; +import io.swagger.v3.oas.models.examples.Example; + import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.Map; import java.util.Objects; public class CodegenMediaType { private CodegenProperty schema; private LinkedHashMap encoding; private HashMap testCases = new HashMap<>(); + private Map examples = null; public CodegenMediaType(CodegenProperty schema, LinkedHashMap encoding, HashMap testCases) { this.schema = schema; @@ -17,6 +21,11 @@ public class CodegenMediaType { } } + public CodegenMediaType(CodegenProperty schema, LinkedHashMap encoding, HashMap testCases, Map examples) { + this(schema, encoding, testCases); + this.examples = examples; + } + public CodegenProperty getSchema() { return schema; } @@ -27,6 +36,10 @@ public class CodegenMediaType { public HashMap getTestCases() { return testCases; } + public Map getExamples() { + return examples; + } + public String toString() { final StringBuilder sb = new StringBuilder("CodegenMediaType{"); sb.append("schema=").append(schema); 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 7f9cb8c053f..d0cd1f0e5fd 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 @@ -7236,7 +7236,7 @@ public class DefaultCodegen implements CodegenConfig { } } - CodegenMediaType codegenMt = new CodegenMediaType(schemaProp, ceMap, schemaTestCases); + CodegenMediaType codegenMt = new CodegenMediaType(schemaProp, ceMap, schemaTestCases, mt.getExamples()); cmtContent.put(contentType, codegenMt); if (schemaProp != null) { if (addSchemaImportsFromV3SpecLocations) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 3232f251d02..b571cf2173c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -4189,6 +4189,9 @@ public class DefaultCodegenTest { assertEquals(cp.complexType, "coordinates"); assertEquals(cp.baseName, "SchemaFor201ResponseBodyApplicationJson"); + assertNotNull(mt.getExamples()); + assertEquals(mt.getExamples().size(), 2); + mt = content.get("text/plain"); assertNull(mt.getEncoding()); cp = mt.getSchema(); diff --git a/modules/openapi-generator/src/test/resources/3_0/content-data.yaml b/modules/openapi-generator/src/test/resources/3_0/content-data.yaml index 033677693b4..80f284f9a32 100644 --- a/modules/openapi-generator/src/test/resources/3_0/content-data.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/content-data.yaml @@ -44,6 +44,15 @@ paths: application/json: schema: $ref: '#/components/schemas/coordinates' + examples: + Example Amsterdam coordinates: + value: + lat: 52.377956 + long: 4.897070 + Example San Francisco coordinates: + value: + lat: 37.773972 + long: -122.431297 text/plain: schema: $ref: '#/components/schemas/stringWithMinLength' @@ -58,6 +67,15 @@ paths: application/json: schema: $ref: '#/components/schemas/coordinates' + examples: + Example Amsterdam coordinates: + value: + lat: 52.377956 + long: 4.897070 + Example San Francisco coordinates: + value: + lat: 37.773972 + long: -122.431297 text/plain: schema: $ref: '#/components/schemas/stringWithMinLength'