27
27
import co .elastic .clients .elasticsearch ._types .query_dsl .SpanGapQuery ;
28
28
import co .elastic .clients .elasticsearch .core .SearchRequest ;
29
29
import co .elastic .clients .elasticsearch .indices .IndexSettings ;
30
+ import co .elastic .clients .json .JsonpDeserializer ;
31
+ import jakarta .json .stream .JsonParser ;
30
32
import org .junit .Test ;
31
33
34
+ import java .io .StringReader ;
32
35
import java .util .List ;
33
36
34
37
public class BuiltinTypesTest extends ModelTestCase {
@@ -50,6 +53,38 @@ public void testLenientArray() {
50
53
assertGetterType (List .class , SearchRequest .class , "index" );
51
54
}
52
55
56
+ @ Test
57
+ public void testNullArrayItem () {
58
+ // See https://github.com/elastic/elasticsearch-java/issues/66
59
+
60
+ String json = "[\" a\" , null, \" c\" ]" ;
61
+
62
+ // Types that don't accept null events should end up as null values in the list
63
+ {
64
+ JsonpDeserializer <String > stringDeser = JsonpDeserializer .stringDeserializer ();
65
+ assertFalse (stringDeser .accepts (JsonParser .Event .VALUE_NULL ));
66
+
67
+ JsonParser parser = mapper .jsonProvider ().createParser (new StringReader (json ));
68
+
69
+ List <String > stringList = JsonpDeserializer .arrayDeserializer (stringDeser ).deserialize (parser , mapper );
70
+ assertEquals ("a" , stringList .get (0 ));
71
+ assertNull (stringList .get (1 ));
72
+ assertEquals ("c" , stringList .get (2 ));
73
+ }
74
+
75
+ // Types that do accept null events should end up as their null representation
76
+ {
77
+ assertTrue (FieldValue ._DESERIALIZER .accepts (JsonParser .Event .VALUE_NULL ));
78
+
79
+ JsonParser parser = mapper .jsonProvider ().createParser (new StringReader (json ));
80
+ List <FieldValue > valueList = JsonpDeserializer .arrayDeserializer (FieldValue ._DESERIALIZER ).deserialize (parser , mapper );
81
+
82
+ assertEquals ("a" , valueList .get (0 )._get ());
83
+ assertTrue (valueList .get (1 ).isNull ());
84
+ assertEquals ("c" , valueList .get (2 )._get ());
85
+ }
86
+ }
87
+
53
88
@ Test
54
89
public void testSpanGapQuery () {
55
90
// Hand-written class
0 commit comments