package com.fasterxml.jackson.dataformat.avro.deser;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonToken;
Context used at root level; basically just a container over actual AvroStructureReader
. /**
* Context used at root level; basically just a container
* over actual {@link AvroStructureReader}.
*/
public class RootReader extends AvroReadContext
{
private final AvroParserImpl _parser;
private final AvroStructureReader _valueReader;
public RootReader(AvroParserImpl parser,
AvroStructureReader valueReader) {
super(null, null);
_type = TYPE_ROOT;
_parser = parser;
_valueReader = valueReader;
}
@Override
public JsonToken nextToken() throws IOException {
// First: possibly we are at end. Could theoretically check against
// empty streams but...
if (_parser.checkInputEnd()) {
// 26-Aug-2019, tatu: As per [dataformats-binary#177], 0-field Records consume
// no content, and if so we MUST NOT indicate end-of-content:
if (!_valueReader.consumesNoContent()) {
return null;
}
}
return _valueReader.newReader(this, _parser).nextToken();
}
@Override
public void skipValue(AvroParserImpl parser) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public JsonToken getCurrentToken() {
return null;
}
@Override
public void appendDesc(StringBuilder sb) {
sb.append("/");
}
@Override
public String nextFieldName() throws IOException {
// Could create etc, but realistically no names at root level so:
return null;
// return _valueReader.newReader(this, _parser).nextFieldName();
}
@Override
public String getTypeId() {
return _valueReader.getTypeId();
}
}