11package cloud .eppo .ufc .dto .adapters ;
22
33import cloud .eppo .api .EppoValue ;
4+ import cloud .eppo .ufc .dto .EppoValueType ;
5+
46import com .fasterxml .jackson .core .JsonGenerator ;
57import com .fasterxml .jackson .databind .SerializerProvider ;
68import com .fasterxml .jackson .databind .ser .std .StdSerializer ;
@@ -18,23 +20,31 @@ public EppoValueSerializer() {
1820 @ Override
1921 public void serialize (EppoValue src , JsonGenerator jgen , SerializerProvider provider )
2022 throws IOException {
21- switch (src .type ) {
22- case NULL :
23- jgen .writeNull ();
24- break ;
25- case BOOLEAN :
26- jgen .writeBoolean (src .booleanValue ());
27- break ;
28- case NUMBER :
29- jgen .writeNumber (src .doubleValue ());
30- break ;
31- case STRING :
32- jgen .writeString (src .stringValue ());
33- break ;
34- case ARRAY_OF_STRING :
35- String [] arr = src .stringArrayValue ().toArray (new String [0 ]);
36- jgen .writeArray (arr , 0 , arr .length );
37- break ;
23+ final EppoValueType type = src .getType ();
24+ if (type == null ) {
25+ // this should never happen, but if it does,
26+ // we need to write something so that we're valid JSON
27+ // so a null value is safest.
28+ jgen .writeNull ();
29+ } else {
30+ switch (src .getType ()) {
31+ case NULL :
32+ jgen .writeNull ();
33+ break ;
34+ case BOOLEAN :
35+ jgen .writeBoolean (src .booleanValue ());
36+ break ;
37+ case NUMBER :
38+ jgen .writeNumber (src .doubleValue ());
39+ break ;
40+ case STRING :
41+ jgen .writeString (src .stringValue ());
42+ break ;
43+ case ARRAY_OF_STRING :
44+ String [] arr = src .stringArrayValue ().toArray (new String [0 ]);
45+ jgen .writeArray (arr , 0 , arr .length );
46+ break ;
47+ }
3848 }
3949 }
4050}
0 commit comments