* 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>
echo-api-native
Echo Server API
-
API version: 0.1.0
-
Generator version: 7.7.0-SNAPSHOT
Echo Server API
Automatically generated by the OpenAPI Generator
Requirements
Building the API client library requires:
- Java 17+
- Maven/Gradle
Installation
To install the API client library to your local Maven repository, simply execute:
mvn clean install
To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
mvn clean deploy
Refer to the OSSRH Guide for more information.
Maven users
Add this dependency to your project's POM:
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>echo-api-native</artifactId>
<version>0.1.0</version>
<scope>compile</scope>
</dependency>
Gradle users
Add this dependency to your project's build file:
repositories {
mavenCentral() // Needed if the 'echo-api-native' jar has been published to maven central.
mavenLocal() // Needed if the 'echo-api-native' jar has been published to the local maven repo.
}
dependencies {
implementation "org.openapitools:echo-api-native:0.1.0"
}
Others
At first generate the JAR by executing:
mvn clean package
Then manually install the following JARs:
target/echo-api-native-0.1.0.jar
target/lib/*.jar
Getting Started
Please follow the installation instruction and execute the following Java code:
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
import org.openapitools.client.api.AuthApi;
public class AuthApiExample {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("http://localhost:3000");
// Configure HTTP basic authorization: http_auth
HttpBasicAuth http_auth = (HttpBasicAuth) defaultClient.getAuthentication("http_auth");
http_auth.setUsername("YOUR USERNAME");
http_auth.setPassword("YOUR PASSWORD");
AuthApi apiInstance = new AuthApi(defaultClient);
try {
String result = apiInstance.testAuthHttpBasic();
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling AuthApi#testAuthHttpBasic");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Documentation for API Endpoints
All URIs are relative to http://localhost:3000
Class | Method | HTTP request | Description |
---|---|---|---|
AuthApi | testAuthHttpBasic | POST /auth/http/basic | To test HTTP basic authentication |
AuthApi | testAuthHttpBearer | POST /auth/http/bearer | To test HTTP bearer authentication |
BodyApi | testBinaryGif | POST /binary/gif | Test binary (gif) response body |
BodyApi | testBodyApplicationOctetstreamBinary | POST /body/application/octetstream/binary | Test body parameter(s) |
BodyApi | testBodyMultipartFormdataArrayOfBinary | POST /body/application/octetstream/array_of_binary | Test array of binary in multipart mime |
BodyApi | testBodyMultipartFormdataSingleBinary | POST /body/application/octetstream/single_binary | Test single binary in multipart mime |
BodyApi | testEchoBodyAllOfPet | POST /echo/body/allOf/Pet | Test body parameter(s) |
BodyApi | testEchoBodyFreeFormObjectResponseString | POST /echo/body/FreeFormObject/response_string | Test free form object |
BodyApi | testEchoBodyPet | POST /echo/body/Pet | Test body parameter(s) |
BodyApi | testEchoBodyPetResponseString | POST /echo/body/Pet/response_string | Test empty response body |
BodyApi | testEchoBodyStringEnum | POST /echo/body/string_enum | Test string enum response body |
BodyApi | testEchoBodyTagResponseString | POST /echo/body/Tag/response_string | Test empty json (request body) |
FormApi | testFormIntegerBooleanString | POST /form/integer/boolean/string | Test form parameter(s) |
FormApi | testFormObjectMultipart | POST /form/object/multipart | Test form parameter(s) for multipart schema |
FormApi | testFormOneof | POST /form/oneof | Test form parameter(s) for oneOf schema |
HeaderApi | testHeaderIntegerBooleanStringEnums | GET /header/integer/boolean/string/enums | Test header parameter(s) |
PathApi | testsPathStringPathStringIntegerPathIntegerEnumNonrefStringPathEnumRefStringPath | GET /path/string/{path_string}/integer/{path_integer}/{enum_nonref_string_path}/{enum_ref_string_path} | Test path parameter(s) |
QueryApi | testEnumRefString | GET /query/enum_ref_string | Test query parameter(s) |
QueryApi | testQueryDatetimeDateString | GET /query/datetime/date/string | Test query parameter(s) |
QueryApi | testQueryIntegerBooleanString | GET /query/integer/boolean/string | Test query parameter(s) |
QueryApi | testQueryStyleDeepObjectExplodeTrueObject | GET /query/style_deepObject/explode_true/object | Test query parameter(s) |
QueryApi | testQueryStyleDeepObjectExplodeTrueObjectAllOf | GET /query/style_deepObject/explode_true/object/allOf | Test query parameter(s) |
QueryApi | testQueryStyleFormExplodeFalseArrayInteger | GET /query/style_form/explode_false/array_integer | Test query parameter(s) |
QueryApi | testQueryStyleFormExplodeFalseArrayString | GET /query/style_form/explode_false/array_string | Test query parameter(s) |
QueryApi | testQueryStyleFormExplodeTrueArrayString | GET /query/style_form/explode_true/array_string | Test query parameter(s) |
QueryApi | testQueryStyleFormExplodeTrueObject | GET /query/style_form/explode_true/object | Test query parameter(s) |
QueryApi | testQueryStyleFormExplodeTrueObjectAllOf | GET /query/style_form/explode_true/object/allOf | Test query parameter(s) |
Documentation for Models
- Bird
- Category
- DataQuery
- DefaultValue
- NumberPropertiesOnly
- Pet
- Query
- StringEnumRef
- Tag
- TestFormObjectMultipartRequestMarker
- TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
- TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
Documentation for Authorization
Authentication schemes defined for the API:
http_auth
- Type: HTTP basic authentication
http_bearer_auth
- Type: HTTP Bearer Token authentication
Recommendation
It's recommended to create an instance of ApiClient
per thread in a multithreaded environment to avoid any potential issues.