41
41
import static java .util .Collections .singletonMap ;
42
42
import static org .hamcrest .Matchers .hasEntry ;
43
43
import static org .hamcrest .Matchers .hasKey ;
44
+ import static org .hamcrest .Matchers .hasSize ;
44
45
import static org .hamcrest .Matchers .instanceOf ;
45
46
import static org .hamcrest .Matchers .nullValue ;
46
47
import static org .hamcrest .core .IsEqual .equalTo ;
@@ -150,8 +151,8 @@ public void testExtractValue() throws Exception {
150
151
extValue = XContentMapValues .extractValue ("path1.test" , map );
151
152
assertThat (extValue , instanceOf (List .class ));
152
153
153
- List extListValue = (List ) extValue ;
154
- assertThat (extListValue . size (), equalTo (2 ));
154
+ List <?> extListValue = (List ) extValue ;
155
+ assertThat (extListValue , hasSize (2 ));
155
156
156
157
builder = XContentFactory .jsonBuilder ().startObject ()
157
158
.startObject ("path1" )
@@ -170,7 +171,7 @@ public void testExtractValue() throws Exception {
170
171
assertThat (extValue , instanceOf (List .class ));
171
172
172
173
extListValue = (List ) extValue ;
173
- assertThat (extListValue . size (), equalTo (2 ));
174
+ assertThat (extListValue , hasSize (2 ));
174
175
assertThat (extListValue .get (0 ).toString (), equalTo ("value1" ));
175
176
assertThat (extListValue .get (1 ).toString (), equalTo ("value2" ));
176
177
@@ -236,9 +237,9 @@ public void testPrefixedNamesFilteringTest() {
236
237
Map <String , Object > map = new HashMap <>();
237
238
map .put ("obj" , "value" );
238
239
map .put ("obj_name" , "value_name" );
239
- Map <String , Object > filterdMap = XContentMapValues .filter (map , new String []{"obj_name" }, Strings .EMPTY_ARRAY );
240
- assertThat (filterdMap .size (), equalTo (1 ));
241
- assertThat ((String ) filterdMap .get ("obj_name" ), equalTo ("value_name" ));
240
+ Map <String , Object > filteredMap = XContentMapValues .filter (map , new String []{"obj_name" }, Strings .EMPTY_ARRAY );
241
+ assertThat (filteredMap .size (), equalTo (1 ));
242
+ assertThat ((String ) filteredMap .get ("obj_name" ), equalTo ("value_name" ));
242
243
}
243
244
244
245
@@ -253,19 +254,17 @@ public void testNestedFiltering() {
253
254
put ("nested" , 2 );
254
255
put ("nested_2" , 3 );
255
256
}}));
256
- Map <String , Object > falteredMap = XContentMapValues .filter (map , new String []{"array.nested" }, Strings .EMPTY_ARRAY );
257
- assertThat (falteredMap .size (), equalTo (1 ));
257
+ Map <String , Object > filteredMap = XContentMapValues .filter (map , new String []{"array.nested" }, Strings .EMPTY_ARRAY );
258
+ assertThat (filteredMap .size (), equalTo (1 ));
258
259
259
- // Selecting members of objects within arrays (ex. [ 1, { nested: "value"} ]) always returns all values in the array (1 in the ex)
260
- // this is expected behavior as this types of objects are not supported in ES
261
- assertThat ((Integer ) ((List ) falteredMap .get ("array" )).get (0 ), equalTo (1 ));
262
- assertThat (((Map <String , Object >) ((List ) falteredMap .get ("array" )).get (1 )).size (), equalTo (1 ));
263
- assertThat ((Integer ) ((Map <String , Object >) ((List ) falteredMap .get ("array" )).get (1 )).get ("nested" ), equalTo (2 ));
260
+ assertThat (((List <?>) filteredMap .get ("array" )), hasSize (1 ));
261
+ assertThat (((Map <String , Object >) ((List ) filteredMap .get ("array" )).get (0 )).size (), equalTo (1 ));
262
+ assertThat ((Integer ) ((Map <String , Object >) ((List ) filteredMap .get ("array" )).get (0 )).get ("nested" ), equalTo (2 ));
264
263
265
- falteredMap = XContentMapValues .filter (map , new String []{"array.*" }, Strings .EMPTY_ARRAY );
266
- assertThat (falteredMap .size (), equalTo (1 ));
267
- assertThat ((Integer ) (( List ) falteredMap .get ("array" )). get ( 0 ), equalTo (1 ));
268
- assertThat (((Map <String , Object >) ((List ) falteredMap .get ("array" )).get (1 )).size (), equalTo (2 ));
264
+ filteredMap = XContentMapValues .filter (map , new String []{"array.*" }, Strings .EMPTY_ARRAY );
265
+ assertThat (filteredMap .size (), equalTo (1 ));
266
+ assertThat ((( List <?>) filteredMap .get ("array" )), hasSize (1 ));
267
+ assertThat (((Map <String , Object >) ((List ) filteredMap .get ("array" )).get (0 )).size (), equalTo (2 ));
269
268
270
269
map .clear ();
271
270
map .put ("field" , "value" );
@@ -274,16 +273,16 @@ public void testNestedFiltering() {
274
273
put ("field" , "value" );
275
274
put ("field2" , "value2" );
276
275
}});
277
- falteredMap = XContentMapValues .filter (map , new String []{"obj.field" }, Strings .EMPTY_ARRAY );
278
- assertThat (falteredMap .size (), equalTo (1 ));
279
- assertThat (((Map <String , Object >) falteredMap .get ("obj" )).size (), equalTo (1 ));
280
- assertThat ((String ) ((Map <String , Object >) falteredMap .get ("obj" )).get ("field" ), equalTo ("value" ));
276
+ filteredMap = XContentMapValues .filter (map , new String []{"obj.field" }, Strings .EMPTY_ARRAY );
277
+ assertThat (filteredMap .size (), equalTo (1 ));
278
+ assertThat (((Map <String , Object >) filteredMap .get ("obj" )).size (), equalTo (1 ));
279
+ assertThat ((String ) ((Map <String , Object >) filteredMap .get ("obj" )).get ("field" ), equalTo ("value" ));
281
280
282
- falteredMap = XContentMapValues .filter (map , new String []{"obj.*" }, Strings .EMPTY_ARRAY );
283
- assertThat (falteredMap .size (), equalTo (1 ));
284
- assertThat (((Map <String , Object >) falteredMap .get ("obj" )).size (), equalTo (2 ));
285
- assertThat ((String ) ((Map <String , Object >) falteredMap .get ("obj" )).get ("field" ), equalTo ("value" ));
286
- assertThat ((String ) ((Map <String , Object >) falteredMap .get ("obj" )).get ("field2" ), equalTo ("value2" ));
281
+ filteredMap = XContentMapValues .filter (map , new String []{"obj.*" }, Strings .EMPTY_ARRAY );
282
+ assertThat (filteredMap .size (), equalTo (1 ));
283
+ assertThat (((Map <String , Object >) filteredMap .get ("obj" )).size (), equalTo (2 ));
284
+ assertThat ((String ) ((Map <String , Object >) filteredMap .get ("obj" )).get ("field" ), equalTo ("value" ));
285
+ assertThat ((String ) ((Map <String , Object >) filteredMap .get ("obj" )).get ("field2" ), equalTo ("value2" ));
287
286
288
287
}
289
288
@@ -325,7 +324,7 @@ public void testCompleteObjectFiltering() {
325
324
326
325
filteredMap = XContentMapValues .filter (map , new String []{"array" }, new String []{"*.field2" });
327
326
assertThat (filteredMap .size (), equalTo (1 ));
328
- assertThat (((List ) filteredMap .get ("array" )). size (), equalTo (2 ));
327
+ assertThat (((List <?> ) filteredMap .get ("array" )), hasSize (2 ));
329
328
assertThat ((Integer ) ((List ) filteredMap .get ("array" )).get (0 ), equalTo (1 ));
330
329
assertThat (((Map <String , Object >) ((List ) filteredMap .get ("array" )).get (1 )).size (), equalTo (1 ));
331
330
assertThat (((Map <String , Object >) ((List ) filteredMap .get ("array" )).get (1 )).get ("field" ).toString (), equalTo ("value" ));
@@ -438,20 +437,20 @@ public void testNotOmittingObjectWithNestedExcludedObject() throws Exception {
438
437
439
438
assertThat (filteredSource .size (), equalTo (1 ));
440
439
assertThat (filteredSource , hasKey ("obj1" ));
441
- assertThat (((Map ) filteredSource .get ("obj1" )).size (), Matchers . equalTo (0 ));
440
+ assertThat (((Map ) filteredSource .get ("obj1" )).size (), equalTo (0 ));
442
441
443
442
// explicit include
444
443
filteredSource = XContentMapValues .filter (mapTuple .v2 (), new String []{"obj1" }, new String []{"*.obj2" });
445
444
assertThat (filteredSource .size (), equalTo (1 ));
446
445
assertThat (filteredSource , hasKey ("obj1" ));
447
- assertThat (((Map ) filteredSource .get ("obj1" )).size (), Matchers . equalTo (0 ));
446
+ assertThat (((Map ) filteredSource .get ("obj1" )).size (), equalTo (0 ));
448
447
449
448
// wild card include
450
449
filteredSource = XContentMapValues .filter (mapTuple .v2 (), new String []{"*.obj2" }, new String []{"*.obj3" });
451
450
assertThat (filteredSource .size (), equalTo (1 ));
452
451
assertThat (filteredSource , hasKey ("obj1" ));
453
452
assertThat (((Map <String , Object >) filteredSource .get ("obj1" )), hasKey ("obj2" ));
454
- assertThat (((Map ) ((Map ) filteredSource .get ("obj1" )).get ("obj2" )).size (), Matchers . equalTo (0 ));
453
+ assertThat (((Map ) ((Map ) filteredSource .get ("obj1" )).get ("obj2" )).size (), equalTo (0 ));
455
454
}
456
455
457
456
@ SuppressWarnings ({"unchecked" })
@@ -591,4 +590,15 @@ public void testSharedPrefixes() {
591
590
assertEquals (Collections .singletonMap ("foobar" , 2 ), XContentMapValues .filter (map , new String [] {"foobar" }, new String [0 ]));
592
591
assertEquals (Collections .singletonMap ("foobaz" , 3 ), XContentMapValues .filter (map , new String [0 ], new String [] {"foobar" }));
593
592
}
593
+
594
+ public void testPrefix () {
595
+ Map <String , Object > map = new HashMap <>();
596
+ map .put ("photos" , Arrays .asList (new String [] {"foo" , "bar" }));
597
+ map .put ("photosCount" , 2 );
598
+
599
+ Map <String , Object > filtered = XContentMapValues .filter (map , new String [] {"photosCount" }, new String [0 ]);
600
+ Map <String , Object > expected = new HashMap <>();
601
+ expected .put ("photosCount" , 2 );
602
+ assertEquals (expected , filtered );
603
+ }
594
604
}
0 commit comments