package com.fasterxml.jackson.dataformat.avro.deser;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonToken;
Simple adapter needed in some cases to unify handling of reading (and
skipping) of structured and scalar values.
/**
* Simple adapter needed in some cases to unify handling of reading (and
* skipping) of structured and scalar values.
*/
final class ScalarDecoderWrapper extends AvroStructureReader
{
Actual decoder used to decode scalar value, wrapped by this reader.
/**
* Actual decoder used to decode scalar value, wrapped by this reader.
*/
private final ScalarDecoder _valueDecoder;
private final AvroParserImpl _parser;
public ScalarDecoderWrapper(ScalarDecoder wrappedReader) {
this(null, null, wrappedReader);
}
private ScalarDecoderWrapper(AvroReadContext parent,
AvroParserImpl parser, ScalarDecoder valueDecoder)
{
super(parent, TYPE_ROOT, null);
_valueDecoder = valueDecoder;
_parser = parser;
}
@Override
public ScalarDecoderWrapper newReader(AvroReadContext parent, AvroParserImpl parser) {
return new ScalarDecoderWrapper(parent, parser, _valueDecoder);
}
@Override
public JsonToken nextToken() throws IOException
{
_parser.setAvroContext(getParent());
return (_currToken = _valueDecoder.decodeValue(_parser));
}
@Override
public String getTypeId() {
return _valueDecoder.getTypeId();
}
@Override
public void skipValue(AvroParserImpl parser) throws IOException {
_valueDecoder.skipValue(parser);
}
@Override
protected void appendDesc(StringBuilder sb) {
sb.append('?');
}
@Override
public String nextFieldName() throws IOException {
nextToken();
return null;
}
}