forked from loafle/openapi-generator-original
[JAVA] [SPRING] [PKMST] [MICRONAUT] XML wireformat: Fix Jackson useWrapping=false, JAXB+Jackson namespaces (#18870)
* Fix XML annotations on model properties (JavaSpring) * generate JAXB annotations for attributes and elements * generate wrapper annotations (JAXB and Jackson) * use XML config from items for annotations of containers * Add test for Jackson XML wrapper correctness * Add additional test cases to cover all xml applications in spec Test now covers all use cases described in - https://web.archive.org/web/20240424203304/https://swagger.io/docs/specification/data-models/representing-xml/ - https://spec.openapis.org/oas/v3.0.0#xml-arrays * Fix basename used instead of xmlName when items.xmlName is unset See last example in spec: https://spec.openapis.org/oas/v3.0.0#xml-arrays * Harmonize spacing between Annotation attribute name and value * Refactor and group JAXB vs. Jackson XML annotations, only generate latter if enabled This is in line with the way the class annotations in `xmlAnnotations.mustache` are rendered – which only renders the `@Jackson`… xml annotations if additionalProperty jackson is true. Also reorder annotation attributes in the following order: - localName/name - namespace (optional) - isAttribute/useWrapping (optional) * Explicitly render `useWrapping = true` to @JacksonXmlElementWrapper This was slightly inspired by @jzrebiec via PR #5371. Wrapping is the default since Jackson 2.1 – so explicitly rendering this will: - make generated model work out-of-the-box in Jackson 2.0 for instance - ensure the models still work if the local `XmlWrapper` was configured with `useXmlWrapper(false)` * Move xml test spec to java resources folder (not spring specific) * Make test class name match class-under-test This makes discovery & cross-navigation in IDE easier. * Add complete xml annotations test for Java generators * Fix Java PKMST generator not generating @JacksonXmlElementWrapper * Fix Java microprofile generator missing @JacksonXmlRootElement * Fix Java microprofile generator not using wrapper annotations and namespaces * Fix Java Micronaut Client creating invalid (unclosed) @XmlAttribute annotations * Fix Micronaut Client using wrong localName for @JacksonXmlElementWrapper * Fix Micronaut client rendering @JacksonXmlProperty annotation twice * Make Java Micronaut render @JacksonXmlElementWrapper(useWrapping=false) for non-wrapped elements * Fix Jackson element using `xml.name` when it should be `items.xml.name` Closes #5989 Closes #3223 Relates to #9371 * Fix JAXB element using `baseName` instead of `xmlName` when items.xmlName is unset * Remove XML generation debug output from templates * Remove redundant newline between XML class annotations and class Brings the SpringCodegen in line with other Java Codegen's * Remove redundant newline between XML setter annotations and setter * Fix multiline JavaDoc block indentation and format * Simplify / condense xml annotation template into single lines May look a bit more complex, but cuts out a lot of repetitiveness. Also reorders annotation attributes in the following order: - localName/name - namespace (optional) - isAttribute/useWrapping (optional) * Harmonize spacing between Annotation attribute name and value * Remove unused jackson_annotations partial Was not referenced anywhere in java-helidon resources folder --------- Co-authored-by: Christian Schuster <christian@dnup.de>
This commit is contained in:
@@ -78,12 +78,12 @@ public class Category {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Category
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Category
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!Category.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class Category {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of Category given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Category
|
||||
* @throws IOException if the JSON string is invalid with respect to Category
|
||||
*/
|
||||
/**
|
||||
* Create an instance of Category given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Category
|
||||
* @throws IOException if the JSON string is invalid with respect to Category
|
||||
*/
|
||||
public static Category fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, Category.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of Category to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of Category to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class ModelApiResponse {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to ModelApiResponse
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to ModelApiResponse
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!ModelApiResponse.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class ModelApiResponse {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of ModelApiResponse given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of ModelApiResponse
|
||||
* @throws IOException if the JSON string is invalid with respect to ModelApiResponse
|
||||
*/
|
||||
/**
|
||||
* Create an instance of ModelApiResponse given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of ModelApiResponse
|
||||
* @throws IOException if the JSON string is invalid with respect to ModelApiResponse
|
||||
*/
|
||||
public static ModelApiResponse fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, ModelApiResponse.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of ModelApiResponse to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of ModelApiResponse to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class Order {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Order
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Order
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!Order.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class Order {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of Order given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Order
|
||||
* @throws IOException if the JSON string is invalid with respect to Order
|
||||
*/
|
||||
/**
|
||||
* Create an instance of Order given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Order
|
||||
* @throws IOException if the JSON string is invalid with respect to Order
|
||||
*/
|
||||
public static Order fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, Order.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of Order to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of Order to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class Pet {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Pet
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Pet
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!Pet.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class Pet {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of Pet given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Pet
|
||||
* @throws IOException if the JSON string is invalid with respect to Pet
|
||||
*/
|
||||
/**
|
||||
* Create an instance of Pet given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Pet
|
||||
* @throws IOException if the JSON string is invalid with respect to Pet
|
||||
*/
|
||||
public static Pet fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, Pet.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of Pet to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of Pet to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class Tag {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Tag
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to Tag
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!Tag.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class Tag {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of Tag given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Tag
|
||||
* @throws IOException if the JSON string is invalid with respect to Tag
|
||||
*/
|
||||
/**
|
||||
* Create an instance of Tag given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of Tag
|
||||
* @throws IOException if the JSON string is invalid with respect to Tag
|
||||
*/
|
||||
public static Tag fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, Tag.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of Tag to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of Tag to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class User {
|
||||
openapiRequiredFields = new HashSet<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to User
|
||||
*/
|
||||
/**
|
||||
* Validates the JSON Element and throws an exception if issues found
|
||||
*
|
||||
* @param jsonElement JSON Element
|
||||
* @throws IOException if the JSON Element is invalid with respect to User
|
||||
*/
|
||||
public static void validateJsonElement(JsonElement jsonElement) throws IOException {
|
||||
if (jsonElement == null) {
|
||||
if (!User.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
|
||||
@@ -129,22 +129,22 @@ public class User {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of User given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of User
|
||||
* @throws IOException if the JSON string is invalid with respect to User
|
||||
*/
|
||||
/**
|
||||
* Create an instance of User given an JSON string
|
||||
*
|
||||
* @param jsonString JSON string
|
||||
* @return An instance of User
|
||||
* @throws IOException if the JSON string is invalid with respect to User
|
||||
*/
|
||||
public static User fromJson(String jsonString) throws IOException {
|
||||
return JSON.getGson().fromJson(jsonString, User.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an instance of User to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
/**
|
||||
* Convert an instance of User to an JSON string
|
||||
*
|
||||
* @return JSON string
|
||||
*/
|
||||
public String toJson() {
|
||||
return JSON.getGson().toJson(this);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user