@@ -23,7 +23,14 @@ import (
2323 extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2424)
2525
26- // A predefined type is a type that is predefined in the schema.
26+ const (
27+ keyTypeString = string (AtomicTypeString )
28+ keyTypeInteger = string (AtomicTypeInteger )
29+ keyTypeBoolean = string (AtomicTypeBool )
30+ keyTypeNumber = "number"
31+ )
32+
33+ // A predefinedType is a type that is predefined in the schema.
2734// It is used to resolve references in the schema, while capturing the fact
2835// whether the type has the required marker set (this information would
2936// otherwise be lost in the parsing process).
@@ -112,7 +119,7 @@ func (tf *transformer) parseFieldSchema(key, fieldValue string, parentSchema *ex
112119 fieldJSONSchemaProps := & extv1.JSONSchemaProps {}
113120
114121 if isAtomicType (fieldType ) {
115- fieldJSONSchemaProps .Type = string ( fieldType )
122+ fieldJSONSchemaProps .Type = fieldType
116123 } else if isCollectionType (fieldType ) {
117124 if isMapType (fieldType ) {
118125 fieldJSONSchemaProps , err = tf .handleMapType (key , fieldType )
@@ -147,7 +154,7 @@ func (tf *transformer) handleMapType(key, fieldType string) (*extv1.JSONSchemaPr
147154 if err != nil {
148155 return nil , fmt .Errorf ("failed to parse map type for %s: %w" , key , err )
149156 }
150- if keyType != "string" {
157+ if keyType != keyTypeString {
151158 return nil , fmt .Errorf ("unsupported key type for maps: %s" , keyType )
152159 }
153160
@@ -215,9 +222,9 @@ func (tf *transformer) applyMarkers(schema *extv1.JSONSchemaProps, markers []*Ma
215222 case MarkerTypeDefault :
216223 var defaultValue []byte
217224 switch schema .Type {
218- case "string" :
225+ case keyTypeString :
219226 defaultValue = []byte (fmt .Sprintf ("\" %s\" " , marker .Value ))
220- case "integer" , "number" , "boolean" :
227+ case keyTypeInteger , keyTypeNumber , keyTypeBoolean :
221228 defaultValue = []byte (marker .Value )
222229 default :
223230 defaultValue = []byte (marker .Value )
@@ -260,9 +267,9 @@ func (tf *transformer) applyMarkers(schema *extv1.JSONSchemaProps, markers []*Ma
260267
261268 var rawValue []byte
262269 switch schema .Type {
263- case "string" :
270+ case keyTypeString :
264271 rawValue = []byte (fmt .Sprintf ("%q" , val ))
265- case "integer" :
272+ case keyTypeInteger :
266273 if _ , err := strconv .ParseInt (val , 10 , 64 ); err != nil {
267274 return fmt .Errorf ("failed to parse integer enum value: %w" , err )
268275 }
0 commit comments