Skip to content

Commit 2914b31

Browse files
authored
fix model generation for class hierarchies when nullSafe-array-default is enabled (#79) (#80)
1 parent b0c69d0 commit 2914b31

File tree

3 files changed

+77
-2
lines changed

3 files changed

+77
-2
lines changed

src/main/java/cd/connect/openapi/DartV3ApiGenerator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,10 @@ private void updateModelsWithAllOfInheritance(Map<String, CodegenModel> models)
496496
List<CodegenProperty> ownVars = cm.getVars().stream().filter(cp -> !cp.vendorExtensions.containsKey("x-dart-inherited")).collect(Collectors.toList());
497497
cm.vendorExtensions.put("x-dart-ownVars", ownVars);
498498
cm.vendorExtensions.put("x-dart-hasOwnVars", !ownVars.isEmpty());
499+
500+
List<CodegenProperty> ownDefaultVals = ownVars.stream().filter(cp -> cp.vendorExtensions.containsKey("x-ns-default-val")).collect(Collectors.toList());
501+
cm.vendorExtensions.put("x-own-ns-default-vals", ownDefaultVals);
502+
cm.vendorExtensions.put("x-has-own-ns-default-vals", !ownDefaultVals.isEmpty());
499503
}
500504
}
501505

src/main/resources/dart2-v3template/class.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ class {{classname}}{{#parent}} extends {{parent}}{{/parent}} {
2828
{{#required}}{{#nullSafe}}late {{/nullSafe}}{{/required}}dynamic{{^required}}{{/required}} json;
2929
{{/parent}}{{/hasVars}}
3030
{{classname}}({{#hasVars}}{ {{#vars}}{{#required}}{{#nullSafe}}{{^vendorExtensions.x-ns-default-val}}required {{/vendorExtensions.x-ns-default-val}}{{/nullSafe}}{{/required}}{{#vendorExtensions.x-ns-default-val}}{{{dataType}}}{{#nullSafe}}?{{/nullSafe}} {{{name}}}{{/vendorExtensions.x-ns-default-val}}{{^vendorExtensions.x-ns-default-val}}{{^vendorExtensions.x-dart-inherited}}this.{{/vendorExtensions.x-dart-inherited}}{{{name}}}{{/vendorExtensions.x-ns-default-val}},
31-
{{/vars}} }{{/hasVars}}){{#vendorExtensions.x-has-ns-default-vals}} : {{#vendorExtensions.x-ns-default-vals}}{{^vendorExtensions.x-dart-inherited}}this.{{/vendorExtensions.x-dart-inherited}}{{{name}}} = {{{name}}} ?? []{{^-last}}, {{/-last}}{{/vendorExtensions.x-ns-default-vals}}{{/vendorExtensions.x-has-ns-default-vals}}
32-
{{#parent}} : super({{#vars}}{{#vendorExtensions.x-dart-inherited}}{{name}}: {{name}},{{/vendorExtensions.x-dart-inherited}}{{/vars}}) {{/parent}}
31+
{{/vars}} }{{/hasVars}}){{#vendorExtensions.x-has-own-ns-default-vals}} : {{#vendorExtensions.x-own-ns-default-vals}}this.{{{name}}} = {{{name}}} ?? []{{^-last}}, {{/-last}}{{/vendorExtensions.x-own-ns-default-vals}}{{/vendorExtensions.x-has-own-ns-default-vals}}
32+
{{#parent}} {{#vendorExtensions.x-has-own-ns-default-vals}},{{/vendorExtensions.x-has-own-ns-default-vals}}{{^vendorExtensions.x-has-own-ns-default-vals}}:{{/vendorExtensions.x-has-own-ns-default-vals}} super({{#vars}}{{#vendorExtensions.x-dart-inherited}}{{name}}: {{name}},{{/vendorExtensions.x-dart-inherited}}{{/vars}}) {{/parent}}
3333
;
3434

3535
@override

src/test/resources/inheritance.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,74 @@ components:
106106
type: string
107107
nullable: true
108108
additionalProperties: false
109+
110+
WithList:
111+
type: object
112+
properties:
113+
list:
114+
type: array
115+
items:
116+
$ref: '#/components/schemas/Entity'
117+
nullable: false
118+
nullableList:
119+
type: array
120+
items:
121+
$ref: '#/components/schemas/Entity'
122+
nullable: true
123+
discriminator:
124+
propertyName: type
125+
additionalProperties: false
126+
127+
WithListDerived:
128+
type: object
129+
allOf:
130+
- $ref: '#/components/schemas/Entity'
131+
properties:
132+
list:
133+
type: array
134+
items:
135+
$ref: '#/components/schemas/Entity'
136+
nullable: false
137+
nullableList:
138+
type: array
139+
items:
140+
$ref: '#/components/schemas/Entity'
141+
nullable: true
142+
additionalProperties: false
143+
144+
WithListDerived2:
145+
type: object
146+
allOf:
147+
- $ref: '#/components/schemas/WithList'
148+
properties:
149+
list2:
150+
type: array
151+
items:
152+
$ref: '#/components/schemas/Entity'
153+
nullable: false
154+
nullableList2:
155+
type: array
156+
items:
157+
$ref: '#/components/schemas/Entity'
158+
nullable: true
159+
additionalProperties: false
160+
161+
WithListDerived3:
162+
type: object
163+
allOf:
164+
- $ref: '#/components/schemas/WithList'
165+
properties:
166+
someString:
167+
type: string
168+
nullable: false
169+
additionalProperties: false
170+
171+
WithListDerived4:
172+
type: object
173+
allOf:
174+
- $ref: '#/components/schemas/WithListDerived'
175+
properties:
176+
someString:
177+
type: string
178+
nullable: false
179+
additionalProperties: false

0 commit comments

Comments
 (0)