Skip to content

Commit f21153b

Browse files
committed
chore(templates): sync upstream OpenAPI Generator templates to 7.15.0
- Pulled the latest upstream template set (no local re-implementation). - Included upstream `sealed.mustache` (sealed interfaces/classes support when applicable). - Kept our custom generics-aware wrapper partial (`api_wrapper.mustache`) as-is. - Verified compatibility with 7.15.0; no breaking changes to our client code.
1 parent a4befd0 commit f21153b

File tree

7 files changed

+60
-52
lines changed

7 files changed

+60
-52
lines changed

customer-service-client/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public class CustomerApiClientConfig {
159159
}
160160

161161
@Bean
162-
ApiClient customerApiClient(RestClient restClient,
162+
ApiClient customerApiClient(RestClient customerRestClient,
163163
@Value("${customer.api.base-url}") String baseUrl) {
164164
return new ApiClient(restClient).setBasePath(baseUrl);
165165
}

customer-service-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.bsayli</groupId>
88
<artifactId>customer-service-client</artifactId>
9-
<version>0.4.0</version>
9+
<version>0.5.0</version>
1010
<name>customer-service-client</name>
1111
<description>Generated client (RestClient) using generics-aware OpenAPI templates</description>
1212
<packaging>jar</packaging>

customer-service-client/src/main/resources/openapi-templates/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,4 @@ import java.net.URI;
117117
return String.format("%s=%s", prefix, this.toString());
118118
}
119119
{{/supportUrlQuery}}
120-
}
120+
}

customer-service-client/src/main/resources/openapi-templates/oneof_interface.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{>additionalOneOfTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>xmlAnnotation}}
2-
public interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
2+
public {{>sealed}}interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}}{{>permits}}{
33
{{#discriminator}}
44
public {{propertyType}} {{propertyGetter}}();
55
{{/discriminator}}

customer-service-client/src/main/resources/openapi-templates/pojo.mustache

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
3838
{{#isEnum}}
3939
{{^isContainer}}
4040
{{>modelInnerEnum}}
41+
4142
{{/isContainer}}
4243
{{#isContainer}}
4344
{{#mostInnerItems}}
4445
{{>modelInnerEnum}}
46+
4547
{{/mostInnerItems}}
4648
{{/isContainer}}
4749
{{/isEnum}}
@@ -52,49 +54,42 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
5254
public static final String JSON_PROPERTY_{{nameInSnakeCase}} = "{{baseName}}";
5355
{{/jackson}}
5456
{{#withXml}}
55-
{{#isXmlAttribute}}
56-
@XmlAttribute(name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
57-
{{/isXmlAttribute}}
58-
{{^isXmlAttribute}}
59-
{{^isContainer}}
60-
@XmlElement({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
61-
{{/isContainer}}
62-
{{#isContainer}}
63-
// Is a container wrapped={{isXmlWrapped}}
64-
{{#items}}
65-
// items.name={{name}} items.baseName={{baseName}} items.xmlName={{xmlName}} items.xmlNamespace={{xmlNamespace}}
66-
// items.example={{example}} items.type={{dataType}}
67-
@XmlElement({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
68-
{{/items}}
69-
{{#isXmlWrapped}}
70-
@XmlElementWrapper({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
71-
{{/isXmlWrapped}}
72-
{{/isContainer}}
73-
{{#isDateTime}}
57+
@Xml{{#isXmlAttribute}}Attribute{{/isXmlAttribute}}{{^isXmlAttribute}}Element{{/isXmlAttribute}}(name = "{{items.xmlName}}{{^items.xmlName}}{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}{{/items.xmlName}}"{{#xmlNamespace}}, namespace = "{{.}}"{{/xmlNamespace}})
58+
{{#isXmlWrapped}}
59+
@XmlElementWrapper(name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"{{#xmlNamespace}}, namespace = "{{.}}"{{/xmlNamespace}})
60+
{{/isXmlWrapped}}
61+
{{^isXmlAttribute}}
62+
{{#isDateTime}}
7463
@XmlJavaTypeAdapter(OffsetDateTimeXmlAdapter.class)
75-
{{/isDateTime}}
76-
{{/isXmlAttribute}}
64+
{{/isDateTime}}
65+
{{/isXmlAttribute}}
7766
{{/withXml}}
7867
{{#gson}}
7968
@SerializedName(SERIALIZED_NAME_{{nameInSnakeCase}})
8069
{{/gson}}
70+
{{^isDiscriminator}}
71+
{{>nullable_var_annotations}}{{! prevent indent}}
72+
{{/isDiscriminator}}
73+
{{#isDiscriminator}}
74+
// The discriminator does not have Nullability-annotation since it is added during serialization by the @JsonTypeName annotation
75+
{{/isDiscriminator}}
8176
{{#vendorExtensions.x-field-extra-annotation}}
8277
{{{vendorExtensions.x-field-extra-annotation}}}
8378
{{/vendorExtensions.x-field-extra-annotation}}
8479
{{#vendorExtensions.x-is-jackson-optional-nullable}}
8580
{{#isContainer}}
86-
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>undefined();
81+
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>undefined();
8782
{{/isContainer}}
8883
{{^isContainer}}
89-
private JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
84+
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
9085
{{/isContainer}}
9186
{{/vendorExtensions.x-is-jackson-optional-nullable}}
9287
{{^vendorExtensions.x-is-jackson-optional-nullable}}
9388
{{#isContainer}}
94-
private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
89+
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
9590
{{/isContainer}}
9691
{{^isContainer}}
97-
{{#isDiscriminator}}protected{{/isDiscriminator}}{{^isDiscriminator}}private{{/isDiscriminator}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
92+
{{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
9893
{{/isContainer}}
9994
{{/vendorExtensions.x-is-jackson-optional-nullable}}
10095

@@ -114,7 +109,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
114109
}
115110
{{#vendorExtensions.x-has-readonly-properties}}
116111
{{^withXml}}
117-
112+
/**
113+
* Constructor with only readonly parameters{{#generateConstructorWithAllArgs}}{{^vendorExtensions.x-java-all-args-constructor}} and all parameters{{/vendorExtensions.x-java-all-args-constructor}}{{/generateConstructorWithAllArgs}}
114+
*/
118115
{{#jsonb}}@JsonbCreator{{/jsonb}}{{#jackson}}@JsonCreator{{/jackson}}
119116
public {{classname}}(
120117
{{#readOnlyVars}}
@@ -128,17 +125,31 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
128125
}
129126
{{/withXml}}
130127
{{/vendorExtensions.x-has-readonly-properties}}
128+
{{#vendorExtensions.x-java-all-args-constructor}}
129+
130+
/**
131+
* Constructor with all args parameters
132+
*/
133+
public {{classname}}({{#vendorExtensions.x-java-all-args-constructor-vars}}{{#jsonb}}@JsonbProperty(value = "{{baseName}}"{{^required}}, nullable = true{{/required}}){{/jsonb}}{{#jackson}}@JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}}){{/jackson}} {{{datatypeWithEnum}}} {{name}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-java-all-args-constructor-vars}}) {
134+
{{#parent}}
135+
super({{#parentVars}}{{name}}{{^-last}}, {{/-last}}{{/parentVars}});
136+
{{/parent}}
131137
{{#vars}}
138+
this.{{name}} = {{#vendorExtensions.x-is-jackson-optional-nullable}}{{name}} == null ? JsonNullable.<{{{datatypeWithEnum}}}>undefined() : JsonNullable.of({{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{name}}{{/vendorExtensions.x-is-jackson-optional-nullable}};
139+
{{/vars}}
140+
}
141+
{{/vendorExtensions.x-java-all-args-constructor}}
132142

143+
{{#vars}}
133144
{{^isReadOnly}}
134-
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
145+
public {{classname}} {{name}}({{>nullable_var_annotations}} {{{datatypeWithEnum}}} {{name}}) {
135146
{{#vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});{{/vendorExtensions.x-is-jackson-optional-nullable}}
136147
{{^vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = {{name}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
137148
return this;
138149
}
139150
{{#isArray}}
140151

141-
public {{classname}} add{{nameInCamelCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) {
152+
public {{classname}} add{{nameInPascalCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) {
142153
{{#vendorExtensions.x-is-jackson-optional-nullable}}
143154
if (this.{{name}} == null || !this.{{name}}.isPresent()) {
144155
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{{defaultValue}}}{{^defaultValue}}new {{#uniqueItems}}LinkedHashSet{{/uniqueItems}}{{^uniqueItems}}ArrayList{{/uniqueItems}}<>(){{/defaultValue}});
@@ -161,7 +172,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
161172
{{/isArray}}
162173
{{#isMap}}
163174

164-
public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) {
175+
public {{classname}} put{{nameInPascalCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) {
165176
{{#vendorExtensions.x-is-jackson-optional-nullable}}
166177
if (this.{{name}} == null || !this.{{name}}.isPresent()) {
167178
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{{defaultValue}}}{{^defaultValue}}new HashMap<>(){{/defaultValue}});
@@ -186,7 +197,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
186197
{{/isMap}}
187198

188199
{{/isReadOnly}}
189-
/**
200+
/**
190201
{{#description}}
191202
* {{.}}
192203
{{/description}}
@@ -203,26 +214,17 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
203214
{{#deprecated}}
204215
* @deprecated
205216
{{/deprecated}}
206-
**/
217+
*/
207218
{{#deprecated}}
208219
@Deprecated
209220
{{/deprecated}}
210-
{{#required}}
211-
{{#isNullable}}
212-
@{{javaxPackage}}.annotation.Nullable
213-
{{/isNullable}}
214-
{{^isNullable}}
215-
@{{javaxPackage}}.annotation.Nonnull
216-
{{/isNullable}}
217-
{{/required}}
218-
{{^required}}
219-
@{{javaxPackage}}.annotation.Nullable
220-
{{/required}}
221+
{{>nullable_var_annotations}}{{! prevent indent}}
221222
{{#jsonb}}
222223
@JsonbProperty("{{baseName}}")
223224
{{/jsonb}}
224225
{{#useBeanValidation}}
225226
{{>beanValidation}}
227+
226228
{{/useBeanValidation}}
227229
{{#swagger1AnnotationLibrary}}
228230
@ApiModelProperty({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}")
@@ -254,6 +256,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
254256
255257
{{#vendorExtensions.x-is-jackson-optional-nullable}}
256258
{{> jackson_annotations}}
259+
257260
public JsonNullable<{{{datatypeWithEnum}}}> {{getter}}_JsonNullable() {
258261
return {{name}};
259262
}
@@ -267,7 +270,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
267270
268271
{{^isReadOnly}}
269272
{{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}}
270-
{{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
273+
{{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{>nullable_var_annotations}} {{{datatypeWithEnum}}} {{name}}) {
271274
{{#vendorExtensions.x-is-jackson-optional-nullable}}
272275
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});
273276
{{/vendorExtensions.x-is-jackson-optional-nullable}}
@@ -279,10 +282,10 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
279282
280283
{{/vars}}
281284
{{#parent}}
282-
{{#allVars}}
285+
{{#readWriteVars}}
283286
{{#isOverridden}}
284287
@Override
285-
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
288+
public {{classname}} {{name}}({{>nullable_var_annotations}} {{{datatypeWithEnum}}} {{name}}) {
286289
{{#vendorExtensions.x-is-jackson-optional-nullable}}
287290
this.{{setter}}(JsonNullable.<{{{datatypeWithEnum}}}>of({{name}}));
288291
{{/vendorExtensions.x-is-jackson-optional-nullable}}
@@ -293,7 +296,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
293296
}
294297
295298
{{/isOverridden}}
296-
{{/allVars}}
299+
{{/readWriteVars}}
297300
{{/parent}}
298301
@Override
299302
public boolean equals(Object o) {
@@ -401,7 +404,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
401404
{{#uniqueItems}}
402405
if ({{getter}}() != null) {
403406
int i = 0;
404-
for ({{{items.dataType}}} _item : {{getter}}()) {
407+
for ({{{items.datatypeWithEnum}}} _item : {{getter}}()) {
405408
try {
406409
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
407410
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
@@ -613,5 +616,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
613616
}
614617
};
615618
{{/parcelableModel}}
619+
{{#generateBuilders}}
620+
621+
{{>javaBuilder}}{{! prevent indent}}
622+
{{/generateBuilders}}
616623
617624
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#useSealedOneOfInterfaces}}{{#vendorExtensions.x-is-one-of-interface}}{{#permits.0}}sealed {{/permits.0}}{{/vendorExtensions.x-is-one-of-interface}}{{^permits.0}}{{#vendorExtensions.x-implements}}final {{/vendorExtensions.x-implements}}{{/permits.0}}{{/useSealedOneOfInterfaces}}

customer-service/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<groupId>com.example.demo</groupId>
1515
<artifactId>customer-service</artifactId>
16-
<version>0.4.0</version>
16+
<version>0.5.0</version>
1717
<name>customer-service</name>
1818
<description>Demo service: Spring Boot 3.4 + Springdoc (OpenAPI) for generics-aware client generation</description>
1919

0 commit comments

Comments
 (0)