From dfebf02de0d0de5b111326b3af48f68f2faa2f01 Mon Sep 17 00:00:00 2001 From: Antoine Reilles Date: Thu, 17 May 2018 13:13:35 +0200 Subject: [PATCH 1/4] Fix implFolder issue with jaxrs-cxf-cdi generator This fix is for the issue: https://github.com/swagger-api/swagger-codegen/issues/8113 When using jaxrs-cxf-cdi and other JaxRS generators, the implFolder config is not honored by hte generator on windows. --- .../codegen/languages/AbstractJavaJAXRSServerCodegen.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java index b29afb7b16f8..2ff9e0dac1a2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory; import java.net.URL; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -240,11 +241,11 @@ public String apiFilename(String templateName, String tag) { String result = super.apiFilename(templateName, tag); if (templateName.endsWith("Impl.mustache")) { - int ix = result.lastIndexOf('/'); + int ix = result.lastIndexOf(File.separator); result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java"; result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Factory.mustache")) { - int ix = result.lastIndexOf('/'); + int ix = result.lastIndexOf(File.separator); result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java"; result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Service.mustache")) { From a1737f9acf5566d909692a8559eca3edd04937cf Mon Sep 17 00:00:00 2001 From: Antoine Reilles Date: Thu, 17 May 2018 13:13:59 +0200 Subject: [PATCH 2/4] jaxrs-cxf-cdi: containers with no default init Change similar to https://github.com/swagger-api/swagger-codegen/pull/5363/files for jax-rs-cdi generator. When a property that is a contained is not declared as required, it is initialized to `null`, and not to the empty container. This makes apio mich more easy to use, since one can differentiate when an input list in json has been set to the empty array or simply not set. --- .../resources/JavaJaxRS/cxf-cdi/pojo.mustache | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache index 05543a0dd0e0..26e378f5596a 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache @@ -11,7 +11,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} {{>enumClass}}{{/items}}{{/items.isEnum}} - private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} +{{#isContainer}} + private {{{datatypeWithEnum}}} {{name}}{{#required}} = {{{defaultValue}}}{{/required}}{{^required}} = null{{/required}}; +{{/isContainer}} +{{^isContainer}} + private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}}; +{{/isContainer}}{{/vars}} {{#vars}} /** @@ -33,12 +38,37 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#vendorExtensions.extraAnnotation}}{{{vendorExtensions.extraAnnotation}}}{{/vendorExtensions.extraAnnotation}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") @JsonProperty("{{baseName}}") -{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{{datatypeWithEnum}}} {{getter}}() { +{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{{datatypeWithEnum}}} {{#isBoolean}}is{{/isBoolean}}{{getter}}() { return {{name}}; } public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { this.{{name}} = {{name}}; } + {{#isListContainer}} + + public {{classname}} add{{nameInCamelCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) { + {{^required}} + if (this.{{name}} == null) { + this.{{name}} = {{{defaultValue}}}; + } + {{/required}} + this.{{name}}.add({{name}}Item); + return this; + } + {{/isListContainer}} + + {{#isMapContainer}} + + public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) { + {{^required}} + if (this.{{name}} == null) { + this.{{name}} = {{{defaultValue}}}; + } + {{/required}} + this.{{name}}.put(key, {{name}}Item); + return this; + } + {{/isMapContainer}} {{/vars}} From eb9870cc2742c9ade25c98c6bd20b593ce27d270 Mon Sep 17 00:00:00 2001 From: Antoine Reilles Date: Thu, 17 May 2018 13:46:14 +0200 Subject: [PATCH 3/4] Correct template syntax usage As noted by @jmini, do not use the {{#isBoolean}}is{{/isBoolean}}{{getter}} syntax, that was removed from the OpenAPI Generator. --- .../src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache index 26e378f5596a..aaf576fcdb03 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache @@ -38,7 +38,7 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#vendorExtensions.extraAnnotation}}{{{vendorExtensions.extraAnnotation}}}{{/vendorExtensions.extraAnnotation}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") @JsonProperty("{{baseName}}") -{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{{datatypeWithEnum}}} {{#isBoolean}}is{{/isBoolean}}{{getter}}() { +{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{{datatypeWithEnum}}} {{getter}}() { return {{name}}; } public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { From c636beb93d8caa7fd287bf6686a926d262b6e7fd Mon Sep 17 00:00:00 2001 From: Antoine Reilles Date: Thu, 17 May 2018 16:35:03 +0200 Subject: [PATCH 4/4] execute bin/jaxrs-cxf-cdi-petstore-server.sh This updates the petstore sample --- .../java/org/openapitools/model/Category.java | 4 +++ .../openapitools/model/ModelApiResponse.java | 6 +++++ .../java/org/openapitools/model/Order.java | 12 +++++++++ .../gen/java/org/openapitools/model/Pet.java | 27 ++++++++++++++++++- .../gen/java/org/openapitools/model/Tag.java | 4 +++ .../gen/java/org/openapitools/model/User.java | 16 +++++++++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Category.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Category.java index ab374c735862..041542fec46e 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Category.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Category.java @@ -19,8 +19,10 @@ public class Category { private Long id = null; + private String name = null; + /** **/ public Category id(Long id) { @@ -38,6 +40,7 @@ public void setId(Long id) { this.id = id; } + /** **/ public Category name(String name) { @@ -56,6 +59,7 @@ public void setName(String name) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/ModelApiResponse.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/ModelApiResponse.java index fd2cca1cf780..26f2c5d849e4 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/ModelApiResponse.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/ModelApiResponse.java @@ -19,9 +19,12 @@ public class ModelApiResponse { private Integer code = null; + private String type = null; + private String message = null; + /** **/ public ModelApiResponse code(Integer code) { @@ -39,6 +42,7 @@ public void setCode(Integer code) { this.code = code; } + /** **/ public ModelApiResponse type(String type) { @@ -56,6 +60,7 @@ public void setType(String type) { this.type = type; } + /** **/ public ModelApiResponse message(String message) { @@ -74,6 +79,7 @@ public void setMessage(String message) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java index 523d105bef4d..7bc6a61ecdb2 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java @@ -19,10 +19,14 @@ public class Order { private Long id = null; + private Long petId = null; + private Integer quantity = null; + private java.util.Date shipDate = null; + @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { @@ -56,8 +60,10 @@ public static StatusEnum fromValue(String v) { } private StatusEnum status = null; + private Boolean complete = false; + /** **/ public Order id(Long id) { @@ -75,6 +81,7 @@ public void setId(Long id) { this.id = id; } + /** **/ public Order petId(Long petId) { @@ -92,6 +99,7 @@ public void setPetId(Long petId) { this.petId = petId; } + /** **/ public Order quantity(Integer quantity) { @@ -109,6 +117,7 @@ public void setQuantity(Integer quantity) { this.quantity = quantity; } + /** **/ public Order shipDate(java.util.Date shipDate) { @@ -126,6 +135,7 @@ public void setShipDate(java.util.Date shipDate) { this.shipDate = shipDate; } + /** * Order Status **/ @@ -144,6 +154,7 @@ public void setStatus(StatusEnum status) { this.status = status; } + /** **/ public Order complete(Boolean complete) { @@ -162,6 +173,7 @@ public void setComplete(Boolean complete) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java index 9c993d81738f..32e0792a7985 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java @@ -23,10 +23,15 @@ public class Pet { private Long id = null; + private Category category = null; + private String name = null; + private List photoUrls = new ArrayList(); - private List tags = new ArrayList(); + + private List tags = null; + @XmlType(name="StatusEnum") @XmlEnum(String.class) @@ -62,6 +67,7 @@ public static StatusEnum fromValue(String v) { private StatusEnum status = null; + /** **/ public Pet id(Long id) { @@ -79,6 +85,7 @@ public void setId(Long id) { this.id = id; } + /** **/ public Pet category(Category category) { @@ -96,6 +103,7 @@ public void setCategory(Category category) { this.category = category; } + /** **/ public Pet name(String name) { @@ -114,6 +122,7 @@ public void setName(String name) { this.name = name; } + /** **/ public Pet photoUrls(List photoUrls) { @@ -132,6 +141,12 @@ public void setPhotoUrls(List photoUrls) { this.photoUrls = photoUrls; } + public Pet addPhotoUrlsItem(String photoUrlsItem) { + this.photoUrls.add(photoUrlsItem); + return this; + } + + /** **/ public Pet tags(List tags) { @@ -149,6 +164,15 @@ public void setTags(List tags) { this.tags = tags; } + public Pet addTagsItem(Tag tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList(); + } + this.tags.add(tagsItem); + return this; + } + + /** * pet status in the store **/ @@ -168,6 +192,7 @@ public void setStatus(StatusEnum status) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Tag.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Tag.java index c39e15ac89b9..3f27a3b20234 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Tag.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Tag.java @@ -19,8 +19,10 @@ public class Tag { private Long id = null; + private String name = null; + /** **/ public Tag id(Long id) { @@ -38,6 +40,7 @@ public void setId(Long id) { this.id = id; } + /** **/ public Tag name(String name) { @@ -56,6 +59,7 @@ public void setName(String name) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/User.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/User.java index 3b1d5e720769..f481ec8d0fb7 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/User.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/User.java @@ -19,14 +19,22 @@ public class User { private Long id = null; + private String username = null; + private String firstName = null; + private String lastName = null; + private String email = null; + private String password = null; + private String phone = null; + private Integer userStatus = null; + /** **/ public User id(Long id) { @@ -44,6 +52,7 @@ public void setId(Long id) { this.id = id; } + /** **/ public User username(String username) { @@ -61,6 +70,7 @@ public void setUsername(String username) { this.username = username; } + /** **/ public User firstName(String firstName) { @@ -78,6 +88,7 @@ public void setFirstName(String firstName) { this.firstName = firstName; } + /** **/ public User lastName(String lastName) { @@ -95,6 +106,7 @@ public void setLastName(String lastName) { this.lastName = lastName; } + /** **/ public User email(String email) { @@ -112,6 +124,7 @@ public void setEmail(String email) { this.email = email; } + /** **/ public User password(String password) { @@ -129,6 +142,7 @@ public void setPassword(String password) { this.password = password; } + /** **/ public User phone(String phone) { @@ -146,6 +160,7 @@ public void setPhone(String phone) { this.phone = phone; } + /** * User Status **/ @@ -165,6 +180,7 @@ public void setUserStatus(Integer userStatus) { } + @Override public boolean equals(java.lang.Object o) { if (this == o) {