1
1
package cloud .eppo .ufc .dto .adapters ;
2
2
3
3
import cloud .eppo .api .EppoValue ;
4
+ import cloud .eppo .ufc .dto .EppoValueType ;
5
+
4
6
import com .fasterxml .jackson .core .JsonGenerator ;
5
7
import com .fasterxml .jackson .databind .SerializerProvider ;
6
8
import com .fasterxml .jackson .databind .ser .std .StdSerializer ;
@@ -18,23 +20,31 @@ public EppoValueSerializer() {
18
20
@ Override
19
21
public void serialize (EppoValue src , JsonGenerator jgen , SerializerProvider provider )
20
22
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
+ }
38
48
}
39
49
}
40
50
}
0 commit comments