99
1010package org .elasticsearch .common .xcontent .json ;
1111
12+ import org .elasticsearch .common .bytes .BytesReference ;
1213import org .elasticsearch .common .xcontent .BaseXContentTestCase ;
14+ import org .elasticsearch .xcontent .Text ;
15+ import org .elasticsearch .xcontent .XContentBuilder ;
1316import org .elasticsearch .xcontent .XContentGenerator ;
1417import org .elasticsearch .xcontent .XContentParseException ;
1518import org .elasticsearch .xcontent .XContentParser ;
1821import org .elasticsearch .xcontent .json .JsonXContent ;
1922
2023import java .io .ByteArrayOutputStream ;
24+ import java .util .Set ;
25+
26+ import static org .hamcrest .Matchers .equalTo ;
2127
2228public class JsonXContentTests extends BaseXContentTestCase {
2329
@@ -41,4 +47,20 @@ public void testMalformedJsonFieldThrowsXContentException() throws Exception {
4147 assertThrows (XContentParseException .class , () -> parser .text ());
4248 }
4349 }
50+
51+ public void testOptimizedTextHasBytes () throws Exception {
52+ XContentBuilder builder = builder ().startObject ().field ("text" , new Text ("foo" )).endObject ();
53+ XContentParserConfiguration parserConfig = parserConfig ();
54+ if (randomBoolean ()) {
55+ parserConfig = parserConfig .withFiltering (null , Set .of ("*" ), null , true );
56+ }
57+ try (XContentParser parser = createParser (parserConfig , xcontentType ().xContent (), BytesReference .bytes (builder ))) {
58+ assertSame (XContentParser .Token .START_OBJECT , parser .nextToken ());
59+ assertSame (XContentParser .Token .FIELD_NAME , parser .nextToken ());
60+ assertTrue (parser .nextToken ().isValue ());
61+ Text text = (Text ) parser .optimizedText ();
62+ assertTrue (text .hasBytes ());
63+ assertThat (text .string (), equalTo ("foo" ));
64+ }
65+ }
4466}
0 commit comments