@Override public String text() { return delegate.text(); }
private Object parseValue(Parser parser, FieldType esType) { Object obj; // special case of handing null (as text() will return "null") if (parser.currentToken() == Token.VALUE_NULL) { obj = null; } else { obj = reader.readValue(parser, parser.text(), esType); } parser.nextToken(); return obj; }
protected Object readListItem(String fieldName, Token t, String fieldMapping, Parser parser) { if (t == Token.START_ARRAY) { return list(fieldName, fieldMapping, parser); } // handle nested nodes first else if (t == Token.START_OBJECT) { // Don't need special handling for nested fields since this field is already in an array. return map(fieldMapping, parser); } FieldType esType = mapping(fieldMapping, parser); if (t.isValue()) { String rawValue = parser.text(); try { return parseValue(parser, esType); } catch (Exception ex) { throw new EsHadoopParsingException(String.format(Locale.ROOT, "Cannot parse value [%s] for field [%s]", rawValue, fieldName), ex); } } return null; }
@Test public void testNoSkipping() { String data = "{\"test\":\"value\"}"; // ^X Parser parser = new JacksonJsonParser(data.getBytes(Charset.defaultCharset())); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("test")); BlockAwareJsonParser blockParser = new BlockAwareJsonParser(parser); blockParser.exitBlock(); assertThat(parser.currentToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("test")); }
} else if ("relation".equals(parser.currentName())) { parser.nextToken(); relation = parser.text(); } else {
@Test public void testSkippingAtArrayStart() { String data = "{\"array\":[{\"test\":\"value\"}]}"; // ^--------------------^ Parser parser = new JacksonJsonParser(data.getBytes(Charset.defaultCharset())); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("array")); assertThat(parser.nextToken(), equalTo(Parser.Token.START_ARRAY)); BlockAwareJsonParser blockParser = new BlockAwareJsonParser(parser); blockParser.exitBlock(); assertThat(parser.currentToken(), equalTo(Parser.Token.END_ARRAY)); assertThat(parser.nextToken(), equalTo(Parser.Token.END_OBJECT)); assertThat(parser.nextToken(), nullValue()); }
/** * In reality this test case is most likely not going to arise unless the underlying parser is used (Jackson * defends against invalid JSON already), but it is included for sanity and for code coverage. */ @Test public void testSkippingAndEncounterEOF() { String data = "{\"array\":[{\"test\":\"value\"}]}"; // ^ |X Parser parser = new JacksonJsonParser(data.getBytes(Charset.defaultCharset())); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("array")); assertThat(parser.nextToken(), equalTo(Parser.Token.START_ARRAY)); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); BlockAwareJsonParser blockParser = new BlockAwareJsonParser(parser); // Improper use (using underlying parser instead of block parser) assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("test")); assertThat(parser.nextToken(), equalTo(Parser.Token.VALUE_STRING)); assertThat(parser.text(), equalTo("value")); assertThat(parser.nextToken(), equalTo(Parser.Token.END_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.END_ARRAY)); assertThat(parser.nextToken(), equalTo(Parser.Token.END_OBJECT)); blockParser.exitBlock(); assertThat(parser.currentToken(), nullValue()); } }
String scrollId = parser.text();
break; case VALUE_STRING: value = parser.text(); break; default:
@Test public void testSkippingArray() { String data = "{\"array\":[{\"test\":\"value\"}]}"; // ^ |-------------------^ Parser parser = new JacksonJsonParser(data.getBytes(Charset.defaultCharset())); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("array")); BlockAwareJsonParser blockParser = new BlockAwareJsonParser(parser); assertThat(blockParser.nextToken(), equalTo(Parser.Token.START_ARRAY)); // assertThat(blockParser.tokenCharOffset(), equalTo(9)); // Doesn't quite work correctly? assertThat(blockParser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(blockParser.tokenCharOffset(), equalTo(10)); blockParser.exitBlock(); assertThat(blockParser.tokenCharOffset(), equalTo(26)); assertThat(parser.currentToken(), equalTo(Parser.Token.END_ARRAY)); assertThat(parser.nextToken(), equalTo(Parser.Token.END_OBJECT)); assertThat(parser.nextToken(), nullValue()); }
String rawValue = parser.text(); try { if (isArrayField(fieldMapping)) {
@Test public void testSkippingOutOfScope() { String data = "{\"array\":[{\"test\":\"value\"}, {\"test2\":\"value2\"}]}"; // ^------------------^ X Parser parser = new JacksonJsonParser(data.getBytes(Charset.defaultCharset())); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(parser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(parser.text(), equalTo("array")); assertThat(parser.nextToken(), equalTo(Parser.Token.START_ARRAY)); assertThat(parser.nextToken(), equalTo(Parser.Token.START_OBJECT)); BlockAwareJsonParser blockParser = new BlockAwareJsonParser(parser); blockParser.exitBlock(); assertThat(blockParser.currentToken(), equalTo(Parser.Token.END_OBJECT)); assertThat(blockParser.nextToken(), equalTo(Parser.Token.START_OBJECT)); assertThat(blockParser.nextToken(), equalTo(Parser.Token.FIELD_NAME)); assertThat(blockParser.text(), equalTo("test2")); assertThat(blockParser.nextToken(), equalTo(Parser.Token.VALUE_STRING)); assertThat(blockParser.text(), equalTo("value2")); assertThat(blockParser.nextToken(), equalTo(Parser.Token.END_OBJECT)); assertThat(blockParser.nextToken(), equalTo(Parser.Token.END_ARRAY)); boolean failed = false; try { blockParser.exitBlock(); } catch (Exception e) { failed = true; } if (!failed) { fail("Should not have successfully exited a block out of scope of itself."); } }
result[0] = reader.wrapString(parser.text()); t = ParsingUtils.seek(parser, SOURCE, FIELDS);
break; case VALUE_STRING: generator.writeString(parser.text()); parser.nextToken(); break;
@Override public String text() { return delegate.text(); }
private Object parseValue(FieldType esType) { Object obj; // special case of handing null (as text() will return "null") if (parser.currentToken() == Token.VALUE_NULL) { obj = null; } else { obj = reader.readValue(parser, parser.text(), esType); } parser.nextToken(); return obj; }
private Object parseValue(Parser parser, FieldType esType) { Object obj; // special case of handing null (as text() will return "null") if (parser.currentToken() == Token.VALUE_NULL) { obj = null; } else { obj = reader.readValue(parser, parser.text(), esType); } parser.nextToken(); return obj; }
private Object parseValue(Parser parser, FieldType esType) { Object obj; // special case of handing null (as text() will return "null") if (parser.currentToken() == Token.VALUE_NULL) { obj = null; } else { obj = reader.readValue(parser, parser.text(), esType); } parser.nextToken(); return obj; }
private Object parseValue(Parser parser, FieldType esType) { Object obj; // special case of handing null (as text() will return "null") if (parser.currentToken() == Token.VALUE_NULL) { obj = null; } else { obj = reader.readValue(parser, parser.text(), esType); } parser.nextToken(); return obj; }