From c23712d330b49da5b794a97b0b34c4425f633f6d Mon Sep 17 00:00:00 2001 From: Nicolas Torres Date: Fri, 10 Sep 2021 13:32:08 +0200 Subject: [PATCH 1/5] Fix reference to /examples/foo --- .../oss/codegen/doc/BoatExampleUtils.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java index 0998c5c04..766470958 100644 --- a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java +++ b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java @@ -42,7 +42,7 @@ public static void convertExamples(OpenAPI openAPI, MediaType mediaType, String if (mediaType.getExamples() != null) { mediaType.getExamples().forEach((key, example) -> { - log.debug("Adding example: {} to examples with content type: {} and responseCode: {} ", key, contentType, responseCode); + log.info("Adding example: {} to examples with content type: {} and responseCode: {} ", key, contentType, responseCode); BoatExample boatExample = new BoatExample(key, contentType, example, isJson(contentType)); examples.add(boatExample); }); @@ -175,6 +175,28 @@ private static void resolvePathsExamples( return; } + /* This could be a ref to /example or to /examples/foo in the case of responses. + * responses: + 200: + description: OK + examples: + application/json: { "id": 38, "title": "T-shirt" } + text/csv: > + id,title + 38,T-shirt + * + * + * */ + if (refParts[7].equals("examples")) { + Example example = mediaType.getExamples().get(refParts[8]); + if(example == null) { + log.error("Incorrect example reference found! ref: {} , {} does not exist", ref, refParts[8]); + return; + } + boatExample.setExample(example); + return; + } + Example example = new Example().value(mediaType.getExample()); log.warn("Incorrect example reference found! Replacing Example ref: {} used in: {} with example from components", ref, name); boatExample.setExample(example); From cad88a60eb447817afee153e02cdb234545de812 Mon Sep 17 00:00:00 2001 From: Nicolas Torres Date: Fri, 10 Sep 2021 15:03:27 +0200 Subject: [PATCH 2/5] Supress warnings for code in comments --- .../java/com/backbase/oss/codegen/doc/BoatExampleUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java index 766470958..a175b185e 100644 --- a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java +++ b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java @@ -22,7 +22,7 @@ @Slf4j @UtilityClass -@SuppressWarnings("java:S3740") +@SuppressWarnings({"java:S3740", "java:S125"}) public class BoatExampleUtils { private static final String PATHS_REF_PREFIX = "#/paths"; From d73a154f069d93139a028e474516194ba4ccd0b6 Mon Sep 17 00:00:00 2001 From: Nicolas Torres Date: Fri, 10 Sep 2021 15:21:23 +0200 Subject: [PATCH 3/5] Adds example of reference to examples --- .../oas-examples/petstore-example-refs.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml index cf14df2f8..235b6c38f 100644 --- a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml +++ b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml @@ -76,6 +76,14 @@ paths: $ref: "#/components/schemas/Error" example: $ref: "#/paths/~1pets~1%7BpetId%7D/get/responses/default/content/application~1json/example" + '202': + description: Expected response to a valid request + content: + application/json: + examples: + example: + summary: This is an example referenced in a horrible path + value: foo default: description: unexpected error content: @@ -106,6 +114,12 @@ paths: $ref: "#/components/schemas/Pet" example: $ref: "#/paths/~1pets/get/responses/default/content/application~1json/example" + '400': + description: Expected response to a valid request + content: + application/json: + example: + $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/example" '500': description: InternalServerError content: From ec6681ff9856a96830a256b1cf3e79c88c2a51b5 Mon Sep 17 00:00:00 2001 From: Nicolas Torres Date: Fri, 10 Sep 2021 16:04:20 +0200 Subject: [PATCH 4/5] Adds multiple examples and inexistent to test --- README.md | 3 +++ .../test/resources/oas-examples/petstore-example-refs.yaml | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index a967307c9..e57efd335 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ The project is very much Work In Progress and will be published on maven central # Release Notes BOAT is still under development and subject to change. +## 0.14.11 +* *Boat Scaffold* + * References to /examples/foo now are also dereferenced ## 0.14.10 * *Boat Scaffold* * Makes sure to URLDecode paths while dereferencing examples diff --git a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml index 235b6c38f..e05110d9e 100644 --- a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml +++ b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml @@ -120,6 +120,12 @@ paths: application/json: example: $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/example" + application/xml: + examples: + Inexistent: + $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/foo" + AnotheOne: + $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/example" '500': description: InternalServerError content: From cecf9c4d13a323e4954fe633d452e8aabff54fba Mon Sep 17 00:00:00 2001 From: Nicolas Torres Date: Fri, 10 Sep 2021 16:21:30 +0200 Subject: [PATCH 5/5] Reference will always exist if it reaches that code --- .../java/com/backbase/oss/codegen/doc/BoatExampleUtils.java | 4 ---- .../test/resources/oas-examples/petstore-example-refs.yaml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java index a175b185e..c3b69ef2c 100644 --- a/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java +++ b/boat-scaffold/src/main/java/com/backbase/oss/codegen/doc/BoatExampleUtils.java @@ -189,10 +189,6 @@ private static void resolvePathsExamples( * */ if (refParts[7].equals("examples")) { Example example = mediaType.getExamples().get(refParts[8]); - if(example == null) { - log.error("Incorrect example reference found! ref: {} , {} does not exist", ref, refParts[8]); - return; - } boatExample.setExample(example); return; } diff --git a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml index e05110d9e..729730b98 100644 --- a/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml +++ b/boat-scaffold/src/test/resources/oas-examples/petstore-example-refs.yaml @@ -123,7 +123,7 @@ paths: application/xml: examples: Inexistent: - $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/foo" + $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/theinexistentexample" AnotheOne: $ref: "#/paths/~1pets/post/responses/202/content/application~1json/examples/example" '500':