Skip to content

Commit bce74db

Browse files
committed
feat: Add openAPI/templates/Java/typeInfoAnnotation.mustache
1 parent 388e816 commit bce74db

File tree

6 files changed

+66
-2
lines changed

6 files changed

+66
-2
lines changed

ext/hivemq-edge-openapi-2025.11.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ info:
1414
## OpenAPI
1515
HiveMQ's REST API provides an OpenAPI 3.0 schema definition that can imported into popular API tooling (e.g. Postman) or can be used to generate client-code for multiple programming languages.
1616
title: HiveMQ Edge REST API
17-
version: 2025.10-SNAPSHOT
17+
version: 2025.11-SNAPSHOT
1818
x-logo:
1919
url: https://www.hivemq.com/img/svg/hivemq-bee.svg
2020
tags:
@@ -4862,6 +4862,11 @@ components:
48624862
ApiError:
48634863
allOf:
48644864
- $ref: '#/components/schemas/ProblemDetails'
4865+
- type: object
4866+
required:
4867+
- detail
4868+
- status
4869+
- type
48654870
discriminator:
48664871
propertyName: type
48674872
mapping:

ext/openAPI/components/schemas/errors/ApiError.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
allOf:
22
- $ref: "../ProblemDetails.yaml"
3+
- type: object
4+
required:
5+
- detail
6+
- status
7+
- type
38
discriminator:
49
propertyName: type
510
mapping:

ext/openAPI/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ info:
3030
imported into popular API tooling (e.g. Postman) or can be used to generate
3131
client-code for multiple programming languages.
3232
title: HiveMQ Edge REST API
33-
version: 2025.10-SNAPSHOT
33+
version: 2025.11-SNAPSHOT
3434
x-logo:
3535
url: https://www.hivemq.com/img/svg/hivemq-bee.svg
3636
tags:
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# OpenAPI Templates - Java
2+
3+
This folder is for overwriting the default OpenAPI Java templates.
4+
5+
## Where to Download the Templates?
6+
7+
```bash
8+
git clone https://github.com/OpenAPITools/openapi-generator.git
9+
```
10+
11+
## Change Logs
12+
13+
Last updated: 2025-07-01
14+
15+
### `typeInfoAnnotation.mustache`
16+
17+
The discriminator name `type` conflicts with the JackSon `type`. This patch changes the JackSon `type` to `jsontype`.
18+
19+
```diff
20+
@JsonIgnoreProperties(
21+
- value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization
22+
- allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization
23+
value = "json{{{discriminator.propertyBaseName}}}", // ignore manually set json{{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization
24+
allowSetters = true // allows the json{{{discriminator.propertyBaseName}}} to be set during deserialization
25+
)
26+
27+
- @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true)
28+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "json{{{discriminator.propertyBaseName}}}", visible = true)
29+
```
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{{#jackson}}
2+
3+
@JsonIgnoreProperties(
4+
value = "json{{{discriminator.propertyBaseName}}}", // ignore manually set json{{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization
5+
allowSetters = true // allows the json{{{discriminator.propertyBaseName}}} to be set during deserialization
6+
)
7+
8+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "json{{{discriminator.propertyBaseName}}}", visible = true)
9+
{{#discriminator.mappedModels}}
10+
{{#-first}}
11+
@JsonSubTypes({
12+
{{/-first}}
13+
@JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"),
14+
{{#-last}}
15+
})
16+
{{/-last}}
17+
{{/discriminator.mappedModels}}
18+
{{/jackson}}
19+
{{#jsonbPolymorphism}}
20+
@JsonbTypeInfo(key = "{{{discriminator.propertyBaseName}}}"{{#discriminator.mappedModels}}{{#-first}}, value = {
21+
{{/-first}}
22+
@JsonbSubtype(alias = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}", type = {{modelName}}.class),
23+
{{#-last}}
24+
}{{/-last}}{{/discriminator.mappedModels}}){{/jsonbPolymorphism}}

hivemq-edge/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ val buildDirectory = layout.buildDirectory.get()
274274
tasks.register<GenerateTask>("genJaxRs") {
275275
inputSpec.set("${projectDir}/../ext/hivemq-edge-openapi-${project.version}.yaml")
276276
outputDir.set("${buildDirectory}/generated/openapi")
277+
templateDir.set("$projectDir/../ext/openapi/templates/Java")
277278
generatorName.set("jaxrs-spec")
278279
apiPackage.set("com.hivemq.edge.api")
279280
modelPackage.set("com.hivemq.edge.api.model")

0 commit comments

Comments
 (0)