Skip to content

Commit 217000a

Browse files
authored
Merge pull request #1871 from altro3/fix-generate-without-properties
Fixed generating code without properties, but with inheritance.
2 parents 996e53f + 191edad commit 217000a

File tree

15 files changed

+284
-84
lines changed

15 files changed

+284
-84
lines changed

openapi-generator/src/main/java/io/micronaut/openapi/generator/AbstractMicronautJavaCodegen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,6 +1889,7 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
18891889
}
18901890
}
18911891

1892+
model.vendorExtensions.put("hasOwnVars", !model.vars.isEmpty());
18921893
model.vendorExtensions.put("withMultipleVars", model.vars.size() > 1);
18931894
if (!requiredParentVarsWithoutDiscriminator.isEmpty()) {
18941895
model.vendorExtensions.put("requiredParentVarsWithoutDiscriminator", requiredParentVarsWithoutDiscriminator);
@@ -1929,6 +1930,7 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
19291930
// just for tests
19301931
if (System.getProperty("micronaut.test.no-vars") != null) {
19311932
model.hasVars = false;
1933+
model.vendorExtensions.put("hasOwnVars", false);
19321934
model.vendorExtensions.put("requiredVarsWithoutDiscriminator", Collections.emptyList());
19331935
model.vendorExtensions.put("optionalVars", Collections.emptyList());
19341936
model.vendorExtensions.put("requiredVars", Collections.emptyList());

openapi-generator/src/main/java/io/micronaut/openapi/generator/AbstractMicronautKotlinCodegen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1826,6 +1826,7 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
18261826
}
18271827
}
18281828

1829+
model.vendorExtensions.put("hasOwnVars", !model.vars.isEmpty());
18291830
model.vendorExtensions.put("withMultipleVars", model.vars.size() > 1);
18301831
if (!requiredParentVarsWithoutDiscriminator.isEmpty()) {
18311832
model.vendorExtensions.put("requiredParentVarsWithoutDiscriminator", requiredParentVarsWithoutDiscriminator);
@@ -1857,6 +1858,7 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
18571858
// just for tests
18581859
if (System.getProperty("micronaut.test.no-vars") != null) {
18591860
model.hasVars = false;
1861+
model.vendorExtensions.put("hasOwnVars", false);
18601862
model.vendorExtensions.put("requiredVarsWithoutDiscriminator", Collections.emptyList());
18611863
model.vendorExtensions.put("optionalVars", Collections.emptyList());
18621864
model.vendorExtensions.put("requiredVars", Collections.emptyList());

openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,9 +274,9 @@ apiTemplateFiles are for API outputs only (controllers/handlers).
274274
// sort operations by default
275275
protected boolean skipSortingOperations = false;
276276

277-
protected final static Pattern XML_MIME_PATTERN = Pattern.compile("(?i)application/(.*)[+]?xml(;.*)?");
278-
protected final static Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)application/json(;.*)?");
279-
protected final static Pattern JSON_VENDOR_MIME_PATTERN = Pattern.compile("(?i)application/vnd.(.*)+json(;.*)?");
277+
protected static final Pattern XML_MIME_PATTERN = Pattern.compile("(?i)application/(.*)[+]?xml(;.*)?");
278+
protected static final Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)application/json(;.*)?");
279+
protected static final Pattern JSON_VENDOR_MIME_PATTERN = Pattern.compile("(?i)application/vnd.(.*)+json(;.*)?");
280280
private static final Pattern COMMON_PREFIX_ENUM_NAME = Pattern.compile("[a-zA-Z0-9]+\\z");
281281

282282
/**
@@ -3258,7 +3258,7 @@ public CodegenModel fromModel(String name, Schema schema) {
32583258
for (CodegenProperty prop : m.vars) {
32593259
postProcessModelProperty(m, prop);
32603260
}
3261-
m.hasVars = m.vars.size() > 0;
3261+
m.hasVars = !m.vars.isEmpty();
32623262
}
32633263
if (m.allVars != null) {
32643264
for (CodegenProperty prop : m.allVars) {

openapi-generator/src/main/resources/templates/java-micronaut/common/model/enum.mustache

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,13 @@
4141
@Deprecated
4242
{{/deprecated}}
4343
@JsonProperty({{{strValue}}})
44-
{{{name}}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
44+
{{{name}}}({{{value}}}),{{#-last}}
45+
;{{/-last}}
4546
{{/enumVars}}
4647
{{/allowableValues}}
4748

48-
{{#formatSingleLine}}public final static Map<{{{dataType}}}, {{>common/model/enumName}}> VALUE_MAPPING = Map.copyOf(Arrays.stream(values()){{/formatSingleLine}}
49-
.collect(Collectors.toMap(v -> v.value{{#isString}}{{#useEnumCaseInsensitive}}.toLowerCase(){{/useEnumCaseInsensitive}}{{/isString}}, Function.identity())));
49+
{{#formatSingleLine}}public static final Map<{{{dataType}}}, {{>common/model/enumName}}> VALUE_MAPPING = Map.copyOf(Arrays.stream(values()){{/formatSingleLine}}
50+
.collect(Collectors.toMap(v -> v.value{{#isString}}{{#useEnumCaseInsensitive}}.toLowerCase(){{/useEnumCaseInsensitive}}{{/isString}}, Function.identity())));
5051

5152
private final {{{vendorExtensions.baseType}}} value;
5253
{{^lombok}}

openapi-generator/src/main/resources/templates/java-micronaut/common/model/pojo.mustache

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,18 @@
4545
@Serdeable
4646
{{/micronaut_serde_jackson}}
4747
{{#jackson}}
48-
{{#hasVars}}
48+
{{#vendorExtensions.hasOwnVars}}
4949
{{#vendorExtensions.withMultipleVars}}
5050
@JsonPropertyOrder({{openbrace}}
5151
{{#vars}}
52-
{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{^-last}},{{/-last}}
52+
{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}},
5353
{{/vars}}
5454
{{closebrace}})
5555
{{/vendorExtensions.withMultipleVars}}
5656
{{^vendorExtensions.withMultipleVars}}
5757
@JsonPropertyOrder({{#vars}}{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{/vars}})
5858
{{/vendorExtensions.withMultipleVars}}
59-
{{/hasVars}}
59+
{{/vendorExtensions.hasOwnVars}}
6060
{{/jackson}}
6161
{{#additionalModelTypeAnnotations}}
6262
{{{.}}}
@@ -447,15 +447,15 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#vendorE
447447
if (o == null || getClass() != o.getClass()) {
448448
return false;
449449
}
450-
{{#hasVars}}
451-
{{classname}} {{classVarName}} = ({{classname}}) o;
452-
return {{#vars}}{{#isByteArray}}Arrays{{/isByteArray}}{{^isByteArray}}Objects{{/isByteArray}}.equals({{name}}, {{classVarName}}.{{name}}){{^-last}} &&
453-
{{/-last}}{{/vars}}{{#parent}} &&
454-
super.equals(o){{/parent}};
455-
{{/hasVars}}
456-
{{^hasVars}}
450+
{{#vendorExtensions.hasOwnVars}}
451+
var {{classVarName}} = ({{classname}}) o;
452+
return {{#vars}}{{#isByteArray}}Arrays{{/isByteArray}}{{^isByteArray}}Objects{{/isByteArray}}.equals({{name}}, {{classVarName}}.{{name}}){{^-last}}
453+
&& {{/-last}}{{/vars}}{{#parent}}
454+
&& super.equals(o){{/parent}};
455+
{{/vendorExtensions.hasOwnVars}}
456+
{{^vendorExtensions.hasOwnVars}}
457457
return {{#parent}}super.equals(o){{/parent}}{{^parent}}true{{/parent}};
458-
{{/hasVars}}
458+
{{/vendorExtensions.hasOwnVars}}
459459
{{/useReflectionEqualsHashCode}}
460460
}
461461
@@ -465,7 +465,7 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#vendorE
465465
return HashCodeBuilder.reflectionHashCode(this);
466466
{{/useReflectionEqualsHashCode}}
467467
{{^useReflectionEqualsHashCode}}
468-
return Objects.hash({{#vars}}{{^isByteArray}}{{name}}{{/isByteArray}}{{#isByteArray}}Arrays.hashCode({{name}}){{/isByteArray}}{{^-last}}, {{/-last}}{{/vars}}{{#parent}}{{#hasVars}}, {{/hasVars}}super.hashCode(){{/parent}});
468+
return Objects.hash({{#vars}}{{^isByteArray}}{{name}}{{/isByteArray}}{{#isByteArray}}Arrays.hashCode({{name}}){{/isByteArray}}{{^-last}}, {{/-last}}{{/vars}}{{#parent}}{{#vendorExtensions.hasOwnVars}}, {{/vendorExtensions.hasOwnVars}}super.hashCode(){{/parent}});
469469
{{/useReflectionEqualsHashCode}}
470470
}
471471

openapi-generator/src/main/resources/templates/java-micronaut/common/model/typeInfoAnnotation.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
{{#discriminator.propertyBaseName}}
33
{{#jackson}}
44
@JsonIgnoreProperties(
5-
value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization
6-
allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization
5+
value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization
6+
allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization
77
)
88
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "{{{discriminator.propertyBaseName}}}", visible = true)
99
{{#vendorExtensions.hasMappedModels}}
1010
{{#vendorExtensions.hasMultipleMappedModels}}
1111
@JsonSubTypes({{openbrace}}{{#mappedModels}}
12-
@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}}"){{^-last}},{{/-last}}
12+
@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}}"),
1313
{{/mappedModels}}{{closebrace}})
1414
{{/vendorExtensions.hasMultipleMappedModels}}
1515
{{^vendorExtensions.hasMultipleMappedModels}}

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/model/enum.mustache

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
{{{.}}}
2525
{{/additionalEnumTypeAnnotations}}
2626
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#formatSingleLine}}enum class {{>common/model/enumName}}{{/formatSingleLine}}(
27-
@get:JsonValue val value: {{{dataType}}}
27+
@get:JsonValue val value: {{{dataType}}},
2828
) {
2929
3030
{{#allowableValues}}
@@ -41,13 +41,12 @@
4141
@Deprecated("")
4242
{{/deprecated}}
4343
@JsonProperty({{{strValue}}})
44-
{{{name}}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
44+
{{{name}}}({{{value}}}),{{#-last}}
45+
;{{/-last}}
4546
{{/enumVars}}
4647
{{/allowableValues}}
4748

48-
override fun toString(): String {
49-
return {{#isString}}value{{/isString}}{{^isString}}"$value"{{/isString}}
50-
}
49+
override fun toString(): String = {{#isString}}value{{/isString}}{{^isString}}"$value"{{/isString}}
5150

5251
companion object {
5352

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/model/model.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {{javaxPackage}}.annotation.Generated
3838
{{#generateSwagger2Annotations}}
3939
import io.swagger.v3.oas.annotations.media.Schema
4040
{{/generateSwagger2Annotations}}
41+
import java.util.*
4142
{{/formatNoEmptyLines}}
4243
{{#formatOneEmptyLine}}
4344
{{#models}}

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/model/oneof_interface.mustache

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
{{>common/generatedAnnotation}}
77
{{/generatedAnnotation}}
88
{{>common/model/typeInfoAnnotation}}
9-
interface {{classname}}{{#vendorExtensions.x-implements}}{{#-first}} : {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
10-
{{/formatNoEmptyLines}}
9+
interface {{classname}}{{#vendorExtensions.x-implements}}{{#-first}} : {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}}{{/formatNoEmptyLines}}{{#discriminator}} {
1110
12-
{{#discriminator}}
1311
val {{propertyName}}: {{propertyType}}
14-
{{/discriminator}}
1512
}
13+
{{/discriminator}}

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/model/pojo.mustache

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
@Serdeable
2020
{{/micronaut_serde_jackson}}
2121
{{#jackson}}
22-
{{#hasVars}}
22+
{{#vendorExtensions.hasOwnVars}}
2323
@JsonPropertyOrder(
2424
{{#vars}}
25-
{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{^-last}},{{/-last}}
25+
{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}},
2626
{{/vars}}
2727
)
28-
{{/hasVars}}
28+
{{/vendorExtensions.hasOwnVars}}
2929
{{/jackson}}
3030
{{#additionalModelTypeAnnotations}}
3131
{{{.}}}
@@ -94,50 +94,38 @@
9494
{{/formatNoEmptyLines}}
9595
{{/vendorExtensions.optionalVars}}
9696
{{/vendorExtensions.withInheritance}}
97-
{{#hasVars}}){{/hasVars}}{{#parent}}: {{{parent}}}({{#vendorExtensions.requiredParentVarsWithoutDiscriminator}}{{{name}}}{{^-last}}, {{/-last}}{{/vendorExtensions.requiredParentVarsWithoutDiscriminator}}) {{/parent}}{{#vendorExtensions.x-implements}}{{#parent}}, {{/parent}}{{^parent}}: {{/parent}}{{^-first}}, {{/-first}}{{{.}}}{{/vendorExtensions.x-implements}} {{openbrace}}
97+
{{#hasVars}}){{/hasVars}}{{#parent}} : {{{parent}}}({{#vendorExtensions.requiredParentVarsWithoutDiscriminator}}{{{name}}}{{^-last}}, {{/-last}}{{/vendorExtensions.requiredParentVarsWithoutDiscriminator}}){{/parent}}{{#vendorExtensions.x-implements}}{{#parent}}, {{/parent}}{{^parent}}: {{/parent}}{{^-first}}, {{/-first}}{{{.}}}{{/vendorExtensions.x-implements}} {{openbrace}}
9898

9999
{{#vendorExtensions.withInheritance}}
100100

101101
override fun equals(other: Any?): Boolean {
102-
if (this === other) return true
103-
if (javaClass != other?.javaClass) return false
104-
{{#parent}}
105-
if (!super.equals(other)) return false
106-
{{/parent}}
102+
if (this === other) {
103+
return true
104+
}
105+
if (javaClass != other?.javaClass) {
106+
return false
107+
}
107108
other as {{classname}}
108-
{{#hasVars}}
109-
{{#vars}}
110-
if ({{{name}}} != other.{{{name}}}) return false
111-
{{/vars}}
112-
{{/hasVars}}
113-
return true
109+
{{#vendorExtensions.hasOwnVars}}
110+
return {{#vars}}{{^-first}}
111+
&& {{/-first}}{{{name}}} == other.{{{name}}}{{/vars}}{{#parent}}
112+
&& super.equals(other){{/parent}}
113+
{{/vendorExtensions.hasOwnVars}}
114+
{{^vendorExtensions.hasOwnVars}}
115+
return {{#parent}}super.equals(other){{/parent}}{{^parent}}true{{/parent}}
116+
{{/vendorExtensions.hasOwnVars}}
114117
}
115118

116-
override fun hashCode(): Int {
117-
var result = {{#parent}}super.hashCode(){{/parent}}{{^parent}}{{#vars.0}}{{{name}}}{{#isNullable}}?{{/isNullable}}.hashCode(){{#isNullable}} ?: 0{{/isNullable}}{{/vars.0}}{{/parent}}
118-
{{#hasVars}}
119-
{{#vars}}
120-
{{#parent}}
121-
result = 31 * result + {{#isNullable}}({{/isNullable}}{{{name}}}{{#isNullable}}?{{/isNullable}}.hashCode(){{#isNullable}} ?: 0){{/isNullable}}
122-
{{/parent}}
123-
{{^parent}}
124-
{{^-first}}
125-
result = {{#-first}}{{#parent}}31 * result + {{/parent}}{{/-first}}{{^-first}}31 * result + {{/-first}}{{#isNullable}}({{/isNullable}}{{{name}}}{{#isNullable}}?{{/isNullable}}.hashCode(){{#isNullable}} ?: 0){{/isNullable}}
126-
{{/-first}}
127-
{{/parent}}
128-
{{/vars}}
129-
{{/hasVars}}
130-
return result
131-
}
119+
override fun hashCode(): Int =
120+
Objects.hash({{#vars}}{{^isByteArray}}{{name}}{{/isByteArray}}{{#isByteArray}}Arrays.hashCode({{name}}){{/isByteArray}}{{^-last}}, {{/-last}}{{/vars}}{{#parent}}{{#vendorExtensions.hasOwnVars}}, {{/vendorExtensions.hasOwnVars}}super.hashCode(){{/parent}})
132121

133-
override fun toString(): String {
122+
override fun toString(): String =
134123
{{#hasVars}}
135-
return "{{classname}}({{#allVars}}{{{vendorExtensions.realName}}}='${{{name}}}'{{^-last}}, {{/-last}}{{/allVars}})"
124+
"{{classname}}({{#allVars}}{{{vendorExtensions.realName}}}='${{{name}}}'{{^-last}}, {{/-last}}{{/allVars}})"
136125
{{/hasVars}}
137126
{{^hasVars}}
138-
return "{{classname}}()"
127+
"{{classname}}()"
139128
{{/hasVars}}
140-
}
141129
{{/vendorExtensions.withInheritance}}
142130

143131
{{#vars}}
@@ -158,6 +146,7 @@
158146

159147
{{/vars}}
160148

149+
{{#vendorExtensions.hasOwnVars}}
161150
companion object {
162151
{{#serializableModel}}
163152

@@ -170,4 +159,15 @@
170159
const val JSON_PROPERTY_{{nameInSnakeCase}} = "{{baseName}}"
171160
{{/vars}}
172161
}
162+
{{/vendorExtensions.hasOwnVars}}
163+
{{^vendorExtensions.hasOwnVars}}
164+
{{#serializableModel}}
165+
companion object {
166+
167+
@Serial
168+
@JvmStatic
169+
private val serialVersionUID = {{{vendorExtensions.serialId}}}L
170+
}
171+
{{/serializableModel}}
172+
{{/vendorExtensions.hasOwnVars}}
173173
{{closebrace}}

0 commit comments

Comments
 (0)