3
3
import io .swagger .codegen .v3 .CodegenModel ;
4
4
import io .swagger .codegen .v3 .CodegenModelFactory ;
5
5
import io .swagger .codegen .v3 .CodegenModelType ;
6
+ import io .swagger .codegen .v3 .CodegenProperty ;
6
7
import io .swagger .codegen .v3 .generators .DefaultCodegenConfig ;
7
8
import io .swagger .codegen .v3 .generators .SchemaHandler ;
9
+ import io .swagger .codegen .v3 .generators .util .OpenAPIUtil ;
8
10
import io .swagger .v3 .oas .models .media .ArraySchema ;
9
11
import io .swagger .v3 .oas .models .media .ComposedSchema ;
10
12
import io .swagger .v3 .oas .models .media .Schema ;
13
+ import org .apache .commons .lang3 .StringUtils ;
11
14
15
+ import java .util .ArrayList ;
16
+ import java .util .List ;
12
17
import java .util .Map ;
13
18
14
19
public class HtmlSchemaHandler extends SchemaHandler {
@@ -17,8 +22,49 @@ public HtmlSchemaHandler(DefaultCodegenConfig codegenConfig) {
17
22
super (codegenConfig );
18
23
}
19
24
20
- @ Override
21
- public void processComposedSchemas (CodegenModel codegenModel , Schema schema , Map <String , CodegenModel > allModels ) {
22
- // no ops for html generator
25
+ protected void processComposedSchema (CodegenModel codegenModel , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
26
+ List <Schema > schemas = composedSchema .getOneOf ();
27
+ CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModel .getName (), schemas );
28
+ if (composedModel == null ) {
29
+ schemas = composedSchema .getAnyOf ();
30
+ composedModel = this .createComposedModel (ANY_OF_PREFFIX + codegenModel .getName (), schemas );
31
+ if (composedModel == null ) {
32
+ return ;
33
+ }
34
+ }
35
+ this .addInterfaceModel (codegenModel , composedModel );
36
+ this .addInterfaces (schemas , composedModel , allModels );
37
+
38
+ if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
39
+ codegenModel .vendorExtensions .put ("oneOf-model" , composedModel );
40
+ } else if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
41
+ codegenModel .vendorExtensions .put ("anyOf-model" , composedModel );
42
+ }
43
+ }
44
+
45
+ protected void processComposedSchema (String codegenModelName , CodegenProperty codegenProperty , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
46
+ List <Schema > schemas = composedSchema .getOneOf ();
47
+ CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModelName , schemas );
48
+ if (composedModel == null ) {
49
+ schemas = composedSchema .getAnyOf ();
50
+ composedModel = this .createComposedModel (ANY_OF_PREFFIX + codegenModelName , schemas );
51
+ if (composedModel == null ) {
52
+ return ;
53
+ }
54
+ }
55
+ if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
56
+ codegenProperty .vendorExtensions .put ("oneOf-model" , composedModel );
57
+
58
+ } else if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
59
+ codegenProperty .vendorExtensions .put ("anyOf-model" , composedModel );
60
+ }
61
+ final List <String > modelNames = new ArrayList <>();
62
+ for (Schema interfaceSchema : schemas ) {
63
+ if (StringUtils .isNotBlank (interfaceSchema .get$ref ())) {
64
+ String schemaName = OpenAPIUtil .getSimpleRef (interfaceSchema .get$ref ());
65
+ modelNames .add (codegenConfig .toModelName (schemaName ));
66
+ }
67
+ }
68
+ composedModel .vendorExtensions .put ("x-model-names" , modelNames );
23
69
}
24
70
}
0 commit comments