From eefcdca7557e63fce3384458c1dd1794bd998ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20C=C3=B4t=C3=A9?= Date: Mon, 5 Jun 2017 13:54:20 -0400 Subject: [PATCH 1/4] Fix issue 5460 --- .../main/java/io/swagger/codegen/InlineModelResolver.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 34b0906fd10..9a9924de99f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -161,7 +161,7 @@ public void flatten(Swagger swagger) { Map properties = m.getProperties(); flattenProperties(properties, modelName); - + fixStringModel(m); } else if (model instanceof ArrayModel) { ArrayModel m = (ArrayModel) model; Property inner = m.getItems(); @@ -191,6 +191,12 @@ public void flatten(Swagger swagger) { } } + private void fixStringModel(ModelImpl m) { + if (m.getType() != null && m.getType().equals("string") && m.getExample() != null) { + m.setExample(m.getExample().toString().replace("\"", "")); + } + } + private String resolveModelName(String title, String key) { if (title == null) { return uniqueName(key); From 5d4a1fd1a1b82b1012fa81ec1df290d784935b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20C=C3=B4t=C3=A9?= Date: Thu, 15 Jun 2017 09:09:31 -0400 Subject: [PATCH 2/4] Handling only first and last double quote to support example with double quote in the middle --- .../main/java/io/swagger/codegen/InlineModelResolver.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 9a9924de99f..392ae823b1d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -193,7 +193,11 @@ public void flatten(Swagger swagger) { private void fixStringModel(ModelImpl m) { if (m.getType() != null && m.getType().equals("string") && m.getExample() != null) { - m.setExample(m.getExample().toString().replace("\"", "")); + String example = m.getExample().toString(); + if (example.substring(0, 2).equals("\"") && + example.substring(example.length() - 2).equals("\"")) { + m.setExample(example.substring(2, example.length() - 2)); + } } } From 341fa15222859f9221bd7402aec08175e1bb5ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20C=C3=B4t=C3=A9?= Date: Mon, 19 Jun 2017 13:55:07 -0400 Subject: [PATCH 3/4] Fix proposed by @ePaul --- .../main/java/io/swagger/codegen/InlineModelResolver.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 392ae823b1d..dd2375d42ca 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -194,9 +194,9 @@ public void flatten(Swagger swagger) { private void fixStringModel(ModelImpl m) { if (m.getType() != null && m.getType().equals("string") && m.getExample() != null) { String example = m.getExample().toString(); - if (example.substring(0, 2).equals("\"") && - example.substring(example.length() - 2).equals("\"")) { - m.setExample(example.substring(2, example.length() - 2)); + if (example.substring(0, 1).equals("\"") && + example.substring(example.length() - 1).equals("\"")) { + m.setExample(example.substring(1, example.length() - 1)); } } } From 8ee0e123454a85d3a98c30969c5e391532640781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20C=C3=B4t=C3=A9?= Date: Fri, 7 Jul 2017 10:45:41 -0400 Subject: [PATCH 4/4] Add comments to explain de fixStringModel function. Add an enum model called PetStatus that test this scenario. Update sample only for JavaPlayFramework generator --- .../swagger/codegen/InlineModelResolver.java | 5 +++ .../src/test/resources/2_0/petstore.yaml | 9 ++++ .../app/apimodels/PetStatus.java | 43 +++++++++++++++++++ .../java-play-framework/public/swagger.json | 6 +++ 4 files changed, 63 insertions(+) create mode 100644 samples/server/petstore/java-play-framework/app/apimodels/PetStatus.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index dd2375d42ca..283c4c3099a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -191,6 +191,11 @@ public void flatten(Swagger swagger) { } } + /** + * This function fix models that are string (mostly enum). Before this fix, the example + * would look something like that in the doc: "\"example from def\"" + * @param m Model implementation + */ private void fixStringModel(ModelImpl m) { if (m.getType() != null && m.getType().equals("string") && m.getExample() != null) { String example = m.getExample().toString(); diff --git a/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml b/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml index e3ba184ea57..4500a44871f 100644 --- a/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml +++ b/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml @@ -701,6 +701,15 @@ definitions: type: string message: type: string + PetStatus: + type: string + enum: + - Healthy + - Sick + - Quarantined + - InPetsHeaven + description: "Pet's status" + example: Healthy externalDocs: description: Find out more about Swagger url: 'http://swagger.io' diff --git a/samples/server/petstore/java-play-framework/app/apimodels/PetStatus.java b/samples/server/petstore/java-play-framework/app/apimodels/PetStatus.java new file mode 100644 index 00000000000..057b336de32 --- /dev/null +++ b/samples/server/petstore/java-play-framework/app/apimodels/PetStatus.java @@ -0,0 +1,43 @@ +package apimodels; + +import java.util.Objects; +import javax.validation.constraints.*; +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonCreator; + +/** + * Pet's status + */ +public enum PetStatus { + + HEALTHY("Healthy"), + + SICK("Sick"), + + QUARANTINED("Quarantined"), + + INPETSHEAVEN("InPetsHeaven"); + + private String value; + + PetStatus(String value) { + this.value = value; + } + + @Override + @JsonValue + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static PetStatus fromValue(String text) { + for (PetStatus b : PetStatus.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } +} + diff --git a/samples/server/petstore/java-play-framework/public/swagger.json b/samples/server/petstore/java-play-framework/public/swagger.json index 25192459c61..c6bf601eb85 100644 --- a/samples/server/petstore/java-play-framework/public/swagger.json +++ b/samples/server/petstore/java-play-framework/public/swagger.json @@ -861,6 +861,12 @@ }, "title" : "An uploaded response", "description" : "Describes the result of uploading an image resource" + }, + "PetStatus" : { + "type" : "string", + "description" : "Pet's status", + "example" : "Healthy", + "enum" : [ "Healthy", "Sick", "Quarantined", "InPetsHeaven" ] } }, "externalDocs" : {