/** * Overridable factory method that actually instantiates desired parser. */ @Override protected CsvParser _createParser(Reader r, IOContext ctxt) throws IOException { return new CsvParser((CsvIOContext) ctxt, _parserFeatures, _csvParserFeatures, _objectCodec, r); }
@Override public byte[] getBinaryValue(Base64Variant variant) throws IOException, JsonParseException { if (_binaryValue == null) { if (_currToken != JsonToken.VALUE_STRING) { _reportError("Current token ("+_currToken+") not VALUE_STRING, can not access as binary"); } ByteArrayBuilder builder = _getByteArrayBuilder(); _decodeBase64(_currentValue, builder, variant); _binaryValue = builder.toByteArray(); } return _binaryValue; }
switch (_state) { case STATE_DOC_START: return (_currToken = _handleStartDoc()); case STATE_RECORD_START: return (_currToken = _handleRecordStart()); case STATE_NEXT_ENTRY: return (_currToken = _handleNextEntry()); case STATE_NAMED_VALUE: return (_currToken = _handleNamedValue()); case STATE_UNNAMED_VALUE: return (_currToken = _handleUnnamedValue()); case STATE_IN_ARRAY: return (_currToken = _handleArrayValue()); case STATE_SKIP_EXTRA_COLUMNS: return _skipUntilEndOfLine(); case STATE_MISSING_NAME: return (_currToken = _handleMissingName()); case STATE_MISSING_VALUE: return (_currToken = _handleMissingValue()); case STATE_DOC_END: _reader.close();
@Override public String nextFieldName() throws IOException { // Optimize for expected case of getting FIELD_NAME: if (_state == STATE_NEXT_ENTRY) { _binaryValue = null; JsonToken t = _handleNextEntry(); _currToken = t; if (t == JsonToken.FIELD_NAME) { return _currentName; } return null; } // unlikely, but verify just in case return (nextToken() == JsonToken.FIELD_NAME) ? getCurrentName() : null; }
@Override public String nextFieldName() throws IOException { // Optimize for expected case of getting FIELD_NAME: if (_state == STATE_NEXT_ENTRY) { _binaryValue = null; JsonToken t = _handleNextEntry(); _currToken = t; if (t == JsonToken.FIELD_NAME) { return _currentName; } return null; } // unlikely, but verify just in case return (nextToken() == JsonToken.FIELD_NAME) ? currentName() : null; }
@Override public String nextTextValue() throws IOException { _binaryValue = null; JsonToken t; if (_state == STATE_NAMED_VALUE) { _currToken = t = _handleNamedValue(); if (t == JsonToken.VALUE_STRING) { return _currentValue; } } else if (_state == STATE_UNNAMED_VALUE) { _currToken = t = _handleUnnamedValue(); if (t == JsonToken.VALUE_STRING) { return _currentValue; } } else { t = nextToken(); if (t == JsonToken.VALUE_STRING) { return getText(); } } return null; }
@Override public JsonToken nextToken() throws IOException, JsonParseException { _binaryValue = null; switch (_state) { case STATE_DOC_START: return (_currToken = _handleStartDoc()); case STATE_RECORD_START: return (_currToken = _handleRecordStart()); case STATE_NEXT_ENTRY: return (_currToken = _handleNextEntry()); case STATE_NAMED_VALUE: return (_currToken = _handleNamedValue()); case STATE_UNNAMED_VALUE: return (_currToken = _handleUnnamedValue()); case STATE_DOC_END: _reader.close(); if (_parsingContext.inRoot()) { return null; } // should always be in array, actually... but: boolean inArray = _parsingContext.inArray(); _parsingContext = _parsingContext.getParent(); return inArray ? JsonToken.END_ARRAY : JsonToken.END_OBJECT; default: throw new IllegalStateException(); } }
@SuppressWarnings("resource") @Override public byte[] getBinaryValue(Base64Variant variant) throws IOException { if (_binaryValue == null) { if (_currToken != JsonToken.VALUE_STRING) { _reportCsvMappingError("Current token (%s) not VALUE_STRING, can not access as binary", _currToken); } ByteArrayBuilder builder = _getByteArrayBuilder(); _decodeBase64(_currentValue, builder, variant); _binaryValue = builder.toByteArray(); } return _binaryValue; }
name = _reader.nextString(); if (name == null) { _reportError(String.format("Missing header %s", column.getName())); } else if (!column.getName().equals(name)) { _reportError(String.format("Expected header %s, actual header %s", column.getName(), name)); _reportError(String.format("Extra header %s", name)); String first = (size == 0) ? "" : newSchema.columnName(0).trim(); if (first.length() == 0) { _reportCsvMappingError("Empty header line: can not bind data"); setSchema(builder.build());
_readHeaderLine(); _state = STATE_DOC_END; if (isEnabled(Feature.WRAP_AS_ARRAY)) { _parsingContext = _reader.childArrayContext(_parsingContext); return JsonToken.START_ARRAY; if (isEnabled(Feature.WRAP_AS_ARRAY)) { _parsingContext = _reader.childArrayContext(_parsingContext); _state = STATE_RECORD_START; return _handleRecordStart();
_readHeaderLine(); _reader.skipLeadingComments(); return _handleRecordStart();
return _handleNextEntry(); _reportError("Too many entries: expected at most "+_columnCount+" (value #"+_columnCount+" ("+next.length()+" chars) \""+next+"\")");
String first = (size == 0) ? "" : newSchema.column(0).getName().trim(); if (first.length() == 0) { _reportError("Empty header line: can not bind data"); setSchema(builder.build());
@Override public String nextTextValue() throws IOException { _binaryValue = null; JsonToken t; if (_state == STATE_NAMED_VALUE) { _currToken = t = _handleNamedValue(); if (t == JsonToken.VALUE_STRING) { return _currentValue; } } else if (_state == STATE_UNNAMED_VALUE) { _currToken = t = _handleUnnamedValue(); if (t == JsonToken.VALUE_STRING) { return _currentValue; } } else { t = nextToken(); if (t == JsonToken.VALUE_STRING) { return getText(); } } return null; }
@SuppressWarnings("resource") @Override public byte[] getBinaryValue(Base64Variant variant) throws IOException { if (_binaryValue == null) { if (_currToken != JsonToken.VALUE_STRING) { _reportCsvMappingError("Current token (%s) not VALUE_STRING, can not access as binary", _currToken); } ByteArrayBuilder builder = _getByteArrayBuilder(); _decodeBase64(_currentValue, builder, variant); _binaryValue = builder.toByteArray(); } return _binaryValue; }
@Override public boolean nextFieldName(SerializableString str) throws IOException { // Optimize for expected case of getting FIELD_NAME: if (_state == STATE_NEXT_ENTRY) { _binaryValue = null; JsonToken t = _handleNextEntry(); _currToken = t; if (t == JsonToken.FIELD_NAME) { return str.getValue().equals(_currentName); } return false; } // unlikely, but verify just in case return (nextToken() == JsonToken.FIELD_NAME) && str.getValue().equals(getCurrentName()); }
@Override public boolean nextFieldName(SerializableString str) throws IOException { // Optimize for expected case of getting FIELD_NAME: if (_state == STATE_NEXT_ENTRY) { _binaryValue = null; JsonToken t = _handleNextEntry(); _currToken = t; if (t == JsonToken.FIELD_NAME) { return str.getValue().equals(_currentName); } return false; } // unlikely, but verify just in case return (nextToken() == JsonToken.FIELD_NAME) && str.getValue().equals(currentName()); }
name = _reader.nextString(); if (name == null) { _reportError(String.format("Missing header %s", column.getName())); } else if (!column.getName().equals(name)) { _reportError(String.format("Expected header %s, actual header %s", column.getName(), name)); _reportError(String.format("Extra header %s", name)); String first = (size == 0) ? "" : newSchema.columnName(0).trim(); if (first.length() == 0) { _reportCsvMappingError("Empty header line: can not bind data"); setSchema(builder.build());
_readHeaderLine(); _reader.skipLeadingComments(); return _handleRecordStart();
switch (_state) { case STATE_DOC_START: return (_currToken = _handleStartDoc()); case STATE_RECORD_START: return (_currToken = _handleRecordStart()); case STATE_NEXT_ENTRY: return (_currToken = _handleNextEntry()); case STATE_NAMED_VALUE: return (_currToken = _handleNamedValue()); case STATE_UNNAMED_VALUE: return (_currToken = _handleUnnamedValue()); case STATE_IN_ARRAY: return (_currToken = _handleArrayValue()); case STATE_SKIP_EXTRA_COLUMNS: return _skipUntilEndOfLine(); case STATE_MISSING_NAME: return (_currToken = _handleMissingName()); case STATE_MISSING_VALUE: return (_currToken = _handleMissingValue()); case STATE_DOC_END: _reader.close();