24
24
import io .swagger .v3 .oas .models .media .StringSchema ;
25
25
26
26
import java .util .Arrays ;
27
+ import java .util .Collections ;
27
28
import java .util .HashMap ;
29
+ import java .util .HashSet ;
30
+ import java .util .LinkedHashMap ;
28
31
import java .util .Locale ;
29
32
import java .util .Map ;
30
33
import java .util .Objects ;
@@ -40,64 +43,82 @@ public class SchemaUtils {
40
43
private static final String OBJECT_PRIMITIVE = "Object" ;
41
44
private static final String STRING_PRIMITIVE = "String" ;
42
45
43
- private static final Map <String , String > REF_TO_JAVA_TYPE_MAP = Map .of (
44
- "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" , "io.fabric8.kubernetes.api.model.IntOrString" ,
45
- "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" , "io.fabric8.kubernetes.api.model.Quantity" ,
46
- "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" , "io.fabric8.kubernetes.api.model.ObjectMeta" ,
47
- "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta_v2" , "io.fabric8.kubernetes.api.model.ObjectMeta" ,
48
- "#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension" , "io.fabric8.kubernetes.api.model.KubernetesResource" ,
49
- "#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON" ,
50
- "com.fasterxml.jackson.databind.JsonNode" ,
51
- "#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" ,
52
- "com.fasterxml.jackson.databind.JsonNode" );
53
-
54
- private static final Map <String , String > REF_TO_JAVA_PRIMITIVE_MAP = Map .of (
55
- "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" , "String" );
56
-
57
- private static final Map <String , String > JAVA_CLASS_SERIALIZER_MAP = Map .of (
58
- "io.fabric8.kubernetes.api.model.MicroTime" , "io.fabric8.kubernetes.api.model.MicroTimeSerDes.Serializer.class" ,
59
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArray" ,
60
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArraySerDe.Serializer.class" ,
61
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArray" ,
62
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArraySerDe.Serializer.class" ,
63
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBool" ,
64
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBoolSerDe.Serializer.class" ,
65
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBool" ,
66
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBoolSerDe.Serializer.class" ,
67
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArray" ,
68
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArraySerDe.Serializer.class" ,
69
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArray" ,
70
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArraySerDe.Serializer.class" );
71
-
72
- private static final Map <String , String > JAVA_CLASS_DESERIALIZER_MAP = Map .of (
73
- "io.fabric8.kubernetes.api.model.MicroTime" , "io.fabric8.kubernetes.api.model.MicroTimeSerDes.Deserializer.class" ,
74
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArray" ,
75
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArraySerDe.Deserializer.class" ,
76
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArray" ,
77
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArraySerDe.Deserializer.class" ,
78
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBool" ,
79
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBoolSerDe.Deserializer.class" ,
80
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBool" ,
81
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBoolSerDe.Deserializer.class" ,
82
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArray" ,
83
- "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArraySerDe.Deserializer.class" ,
84
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArray" ,
85
- "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArraySerDe.Deserializer.class" );
86
-
87
- private static final Map <String , String > REF_SERIALIZER_MAP = Map .of (
88
- // "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString", "com.marcnuri.yakc.model.serialization.IntOrStringSerializer.class"
89
- );
90
-
91
- private static final Map <String , String > TYPE_MAP = Map .of (
92
- "boolean" , "Boolean" ,
93
- "int32" , "Integer" ,
94
- "int64" , "Long" ,
95
- "double" , "Double" ,
96
- "number" , "Number" ,
97
- "object" , OBJECT_PRIMITIVE ,
98
- "string" , STRING_PRIMITIVE );
99
-
100
- private static final Set <String > PROTECTED_WORDS = Set .of (
46
+ private static final Map <String , String > REF_TO_JAVA_TYPE_MAP = new LinkedHashMap <>();
47
+ static {
48
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" ,
49
+ "io.fabric8.kubernetes.api.model.IntOrString" );
50
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" ,
51
+ "io.fabric8.kubernetes.api.model.Quantity" );
52
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" ,
53
+ "io.fabric8.kubernetes.api.model.ObjectMeta" );
54
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta_v2" ,
55
+ "io.fabric8.kubernetes.api.model.ObjectMeta" );
56
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension" ,
57
+ "io.fabric8.kubernetes.api.model.KubernetesResource" );
58
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON" ,
59
+ "com.fasterxml.jackson.databind.JsonNode" );
60
+ REF_TO_JAVA_TYPE_MAP .put ("#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" ,
61
+ "com.fasterxml.jackson.databind.JsonNode" );
62
+ }
63
+
64
+ private static final Map <String , String > REF_TO_JAVA_PRIMITIVE_MAP = new LinkedHashMap <>();
65
+ static {
66
+ REF_TO_JAVA_PRIMITIVE_MAP .put ("#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" , "String" );
67
+ }
68
+
69
+ private static final Map <String , String > JAVA_CLASS_SERIALIZER_MAP = new LinkedHashMap <>();
70
+ static {
71
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.MicroTime" ,
72
+ "io.fabric8.kubernetes.api.model.MicroTimeSerDes.Serializer.class" );
73
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArray" ,
74
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArraySerDe.Serializer.class" );
75
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArray" ,
76
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArraySerDe.Serializer.class" );
77
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBool" ,
78
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBoolSerDe.Serializer.class" );
79
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBool" ,
80
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBoolSerDe.Serializer.class" );
81
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArray" ,
82
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArraySerDe.Serializer.class" );
83
+ JAVA_CLASS_SERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArray" ,
84
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArraySerDe.Serializer.class" );
85
+ }
86
+
87
+ private static final Map <String , String > JAVA_CLASS_DESERIALIZER_MAP = new LinkedHashMap <>();
88
+ static {
89
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.MicroTime" ,
90
+ "io.fabric8.kubernetes.api.model.MicroTimeSerDes.Deserializer.class" );
91
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArray" ,
92
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrArraySerDe.Deserializer.class" );
93
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArray" ,
94
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrArraySerDe.Deserializer.class" );
95
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBool" ,
96
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrBoolSerDe.Deserializer.class" );
97
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBool" ,
98
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrBoolSerDe.Deserializer.class" );
99
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArray" ,
100
+ "io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsOrStringArraySerDe.Deserializer.class" );
101
+ JAVA_CLASS_DESERIALIZER_MAP .put ("io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArray" ,
102
+ "io.fabric8.kubernetes.api.model.apiextensions.v1beta1.JSONSchemaPropsOrStringArraySerDe.Deserializer.class" );
103
+ }
104
+
105
+ private static final Map <String , String > REF_SERIALIZER_MAP = Collections .emptyMap ();// new LinkedHashMap<>();
106
+ static {
107
+ // REF_SERIALIZER_MAP.put("#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString", "com.marcnuri.yakc.model.serialization.IntOrStringSerializer.class");
108
+ }
109
+
110
+ private static final Map <String , String > TYPE_MAP = new LinkedHashMap <>();
111
+ static {
112
+ TYPE_MAP .put ("boolean" , "Boolean" );
113
+ TYPE_MAP .put ("int32" , "Integer" );
114
+ TYPE_MAP .put ("int64" , "Long" );
115
+ TYPE_MAP .put ("double" , "Double" );
116
+ TYPE_MAP .put ("number" , "Number" );
117
+ TYPE_MAP .put ("object" , OBJECT_PRIMITIVE );
118
+ TYPE_MAP .put ("string" , STRING_PRIMITIVE );
119
+ }
120
+
121
+ private static final Set <String > PROTECTED_WORDS = new HashSet <>(Arrays .asList (
101
122
"continue" ,
102
123
"default" ,
103
124
"enum" ,
@@ -107,7 +128,7 @@ public class SchemaUtils {
107
128
"private" ,
108
129
"for" ,
109
130
"return" ,
110
- "package" );
131
+ "package" )) ;
111
132
112
133
private final GeneratorSettings settings ;
113
134
@@ -168,16 +189,18 @@ public String schemaToClassName(Consumer<String> addImport, Schema<?> schema) {
168
189
if (isString (schema )) {
169
190
return "String" ;
170
191
}
171
- if (ref != null && !ref .isBlank ()) {
172
- return schemaRefToJavaPrimitive (schema )
173
- .or (() -> schemaRefToJavaType (schema ).map (javaType -> {
174
- addImport .accept (javaType );
175
- return javaType .substring (javaType .lastIndexOf ('.' ) + 1 );
176
- }))
177
- .orElseGet (() -> {
178
- addImport .accept (refToModelPackage (ref ));
179
- return refToClassName (ref );
180
- });
192
+ if (ref != null && !ref .trim ().isEmpty ()) {
193
+ final Optional <String > javaPrimitive = schemaRefToJavaPrimitive (schema );
194
+ if (javaPrimitive .isPresent ()) {
195
+ return javaPrimitive .get ();
196
+ }
197
+ final Optional <String > javaType = schemaRefToJavaType (schema );
198
+ if (javaType .isPresent ()) {
199
+ addImport .accept (javaType .get ());
200
+ return javaType .get ().substring (javaType .get ().lastIndexOf ('.' ) + 1 );
201
+ }
202
+ addImport .accept (refToModelPackage (ref ));
203
+ return refToClassName (ref );
181
204
}
182
205
// Plain OpenAPI object map to KubernetesResource (deserializer will take care of the rest)
183
206
if (isObject (schema )) {
0 commit comments