* 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#5989Closes#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>
* #18058 Fix AbstractJavaCodegen.getAccepts() so it returns a String array instead of a comma-separated string, and fixed api.mustache so the @RequestMapping annotation generated produces for x-accepts as a parameter list instead of a (single) string.
* #18058 Updated test case to accept a string array instead of a comma-separated list.
* #18058 Reverted changes on imported compared to the main branch.
* #18058 getAccepts() is now hybrid, and can return both a single String or a String[].
* #18058 Rolled back the hybrid getAccepts(), so it only returns a String array.
* #18058 Updated mustache files to cope with vendorExtensions.x-accepts being a string array instead of a comma-separated string.
* #18058 Generated new sample files with by running `./bin/generate-samples.sh ./bin/configs/*.yaml`
* #18058 Optimization of getAccepts()
* #18058 Regenerated scripts that got broken after resolving conflicts on GitHub
* #18058 Fixed introduced issue with api.mustache causing a redundant accept with @HttpExchange with the PetApi.java, StoreApi.java, and UserApi.java.
* fix: ExampleGenerator correctly generates allOf composed schemas
Changes the previous behavior of generating `null` examples for allOf composed schemas.
Fixes#17497
* fix: ExampleGenerator correctly generates anyOf and oneOf composed schemas
Changes the previous behavior of generating `null` examples for anyOf and oneOf composed schemas.
To generate a oneOf/anyOf example, we generate the example using the first valid schema available. In case of a $ref, we use the first valid reference.
Fixes#17497
* fix #16797 and #15796 spring child constructor missing parent params
* root cause and update the DefaultCodegen.java to add missing property when with multi inheritance
* rollback SpringCodegen.java
* update samples
* rollback with master cause #16992 fixed this issue too
* still using orignal design
* catchup master
* catchup master
* catchup master
* fix
* add tests
---------
Co-authored-by: dabdirb <dabdirb@gmail.com>
* add nullable case to spring test spec
* generate samples for changed spring input
* add nullable case to general test spec
* generate samples for changed general input
* generate samples again
* generates samples again
* re-build from new sources, generates samples again
* Add apache java client option
* Add sample apache client config
* Switch serialization library, use time formatter
* Add pom template for apache dependencies
* Add initial implementation of ApiClient using apache
* Add apache api template
Plus switch to TypeReference to handle generic types
* Add support for sending json data
* Generate test stubs with @Ignore
* Add accept header
* Remove unnecessary builder assignments
* Set responseHeaders instance variable
* Switch to general serialize / deserialize functions
* Handle sending url encoded form data
* Split response processing into new method
* Allow requests without body
* Use general HttpResponse interface
If the method doesn't need to close it
* Use clients connection timeout
* Add constructor accepting custom client
* Handle multipart and direct file uploads
* Support file downloading
Based on the implementation in the jersey client
* Handle missing content disposition
* Raise error if body given for an unexpected method
* Use try with resources for response handling
* Remove unused url parameter encode method
* Handle content type parse exception
* Improve response content type handling
Would have had issues with content type headers containing a charset
* Make all set methods return client
* Add basic readme
* Send content type with files
* Set domain and path on cookies
Otherwise they will be excluded from the request
* Use consistent quoting in error messages
* Add generated apache sample
* Add generated docs changes
* update samples
* rename library, update samples, docs
* update readme
Co-authored-by: Harry White <hwhite@atlassian.com>