@@ -32,11 +32,11 @@ public SchemaHandler(DefaultCodegenConfig codegenConfig) {
32
32
@ Override
33
33
public void processComposedSchemas (CodegenModel codegenModel , Schema schema , Map <String , CodegenModel > allModels ) {
34
34
if (schema instanceof ComposedSchema ) {
35
- this .processComposedSchema (codegenModel , (ComposedSchema ) schema , allModels );
35
+ this .addComposedModel ( this . processComposedSchema (codegenModel , (ComposedSchema ) schema , allModels ) );
36
36
return ;
37
37
}
38
38
if (schema instanceof ArraySchema ) {
39
- this .processArrayItemSchema (codegenModel , (ArraySchema ) schema , allModels );
39
+ this .addComposedModel ( this . processArrayItemSchema (codegenModel , (ArraySchema ) schema , allModels ) );
40
40
return ;
41
41
}
42
42
final Map <String , Schema > properties = schema .getProperties ();
@@ -55,11 +55,11 @@ public void processComposedSchemas(CodegenModel codegenModel, Schema schema, Map
55
55
final CodegenProperty codegenProperty = optionalCodegenProperty .get ();
56
56
final String codegenName = codegenModel .getName () + codegenConfig .toModelName (codegenProperty .getName ());
57
57
if (property instanceof ComposedSchema ) {
58
- processComposedSchema (codegenName , codegenProperty , (ComposedSchema ) property , allModels );
58
+ this . addComposedModel ( this . processComposedSchema (codegenName , codegenProperty , (ComposedSchema ) property , allModels ) );
59
59
continue ;
60
60
}
61
61
if (property instanceof ArraySchema ) {
62
- this .processArrayItemSchema (codegenName , codegenProperty , (ArraySchema ) property , allModels );
62
+ this .addComposedModel ( this . processArrayItemSchema (codegenName , codegenProperty , (ArraySchema ) property , allModels ) );
63
63
continue ;
64
64
}
65
65
}
@@ -70,54 +70,67 @@ public List<CodegenModel> getModels() {
70
70
return composedModels ;
71
71
}
72
72
73
- protected void processComposedSchema (CodegenModel codegenModel , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
73
+ protected CodegenModel processComposedSchema (CodegenModel codegenModel , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
74
74
List <Schema > schemas = composedSchema .getOneOf ();
75
75
CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModel .getName (), schemas );
76
76
if (composedModel == null ) {
77
77
schemas = composedSchema .getAnyOf ();
78
78
composedModel = this .createComposedModel (ANY_OF_PREFFIX + codegenModel .getName (), schemas );
79
79
if (composedModel == null ) {
80
- return ;
80
+ return null ;
81
81
}
82
82
}
83
83
this .addInterfaceModel (codegenModel , composedModel );
84
84
this .addInterfaces (schemas , composedModel , allModels );
85
- composedModels .add (composedModel );
85
+ return composedModel ;
86
+ }
87
+
88
+ protected CodegenModel processComposedSchema (String name , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
89
+ List <Schema > schemas = composedSchema .getOneOf ();
90
+ CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + name , schemas );
91
+ if (composedModel == null ) {
92
+ schemas = composedSchema .getAnyOf ();
93
+ composedModel = this .createComposedModel (ANY_OF_PREFFIX + name , schemas );
94
+ if (composedModel == null ) {
95
+ return null ;
96
+ }
97
+ }
98
+ this .addInterfaces (schemas , composedModel , allModels );
99
+ return composedModel ;
86
100
}
87
101
88
- protected void processComposedSchema (String codegenModelName , CodegenProperty codegenProperty , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
102
+ protected CodegenModel processComposedSchema (String codegenModelName , CodegenProperty codegenProperty , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
89
103
List <Schema > schemas = composedSchema .getOneOf ();
90
104
CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModelName , schemas );
91
105
if (composedModel == null ) {
92
106
schemas = composedSchema .getAnyOf ();
93
107
composedModel = this .createComposedModel (ANY_OF_PREFFIX + codegenModelName , schemas );
94
108
if (composedModel == null ) {
95
- return ;
109
+ return null ;
96
110
}
97
111
}
98
112
this .addInterfaces (schemas , composedModel , allModels );
99
113
codegenProperty .datatype = composedModel .getName ();
100
114
codegenProperty .datatypeWithEnum = composedModel .getName ();
101
115
codegenProperty .baseType = composedModel .getName ();
102
116
codegenProperty .complexType = composedModel .getName ();
103
-
104
- composedModels .add (composedModel );
117
+ return composedModel ;
105
118
}
106
119
107
- protected void processArrayItemSchema (CodegenModel codegenModel , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
120
+ protected CodegenModel processArrayItemSchema (CodegenModel codegenModel , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
108
121
final Schema itemsSchema = arraySchema .getItems ();
109
122
if (itemsSchema instanceof ComposedSchema ) {
110
- final CodegenModel itemsModel = CodegenModelFactory .newInstance (CodegenModelType .MODEL );
111
- itemsModel .setName (codegenModel .name + ARRAY_ITEMS_SUFFIX );
112
- this .processComposedSchema (itemsModel , (ComposedSchema ) itemsSchema , allModels );
123
+ return this .processComposedSchema (codegenModel .name + ARRAY_ITEMS_SUFFIX , (ComposedSchema ) itemsSchema , allModels );
113
124
}
125
+ return null ;
114
126
}
115
127
116
- protected void processArrayItemSchema (String codegenModelName , CodegenProperty codegenProperty , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
128
+ protected CodegenModel processArrayItemSchema (String codegenModelName , CodegenProperty codegenProperty , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
117
129
final Schema itemsSchema = arraySchema .getItems ();
118
130
if (itemsSchema instanceof ComposedSchema ) {
119
- this .processComposedSchema (codegenModelName , codegenProperty , (ComposedSchema ) itemsSchema , allModels );
131
+ return this .processComposedSchema (codegenModelName , codegenProperty , (ComposedSchema ) itemsSchema , allModels );
120
132
}
133
+ return null ;
121
134
}
122
135
123
136
protected CodegenModel createComposedModel (String name , List <Schema > schemas ) {
@@ -168,4 +181,11 @@ protected boolean hasNonObjectSchema(List<Schema> schemas) {
168
181
}
169
182
return false ;
170
183
}
184
+
185
+ protected void addComposedModel (CodegenModel composedModel ) {
186
+ if (composedModel == null ) {
187
+ return ;
188
+ }
189
+ this .composedModels .add (composedModel );
190
+ }
171
191
}
0 commit comments