@@ -131,7 +131,7 @@ protected final static class IntReader extends ScalarDecoder
131
131
{
132
132
@ Override
133
133
public JsonToken decodeValue (AvroParserImpl parser ) throws IOException {
134
- return parser .decodeInt ();
134
+ return parser .decodeIntToken ();
135
135
}
136
136
137
137
@ Override
@@ -151,7 +151,7 @@ public FR(String name, boolean skipper) {
151
151
152
152
@ Override
153
153
public JsonToken readValue (AvroReadContext parent , AvroParserImpl parser ) throws IOException {
154
- return parser .decodeInt ();
154
+ return parser .decodeIntToken ();
155
155
}
156
156
157
157
@ Override
@@ -165,7 +165,7 @@ protected final static class LongReader extends ScalarDecoder
165
165
{
166
166
@ Override
167
167
public JsonToken decodeValue (AvroParserImpl parser ) throws IOException {
168
- return parser .decodeLong ();
168
+ return parser .decodeLongToken ();
169
169
}
170
170
171
171
@ Override
@@ -185,7 +185,7 @@ public FR(String name, boolean skipper) {
185
185
186
186
@ Override
187
187
public JsonToken readValue (AvroReadContext parent , AvroParserImpl parser ) throws IOException {
188
- return parser .decodeLong ();
188
+ return parser .decodeLongToken ();
189
189
}
190
190
191
191
@ Override
@@ -194,6 +194,41 @@ public void skipValue(AvroParserImpl parser) throws IOException {
194
194
}
195
195
}
196
196
}
197
+
198
+ protected final static class CharReader extends ScalarDecoder {
199
+ @ Override
200
+ public JsonToken decodeValue (AvroParserImpl parser ) throws IOException {
201
+ return parser .setString (Character .toString ((char )parser .decodeInt ()));
202
+ }
203
+
204
+ @ Override
205
+ protected void skipValue (AvroParserImpl parser ) throws IOException {
206
+ // ints use variable-length zigzagging; alas, no native skipping
207
+ parser .skipInt ();
208
+ }
209
+
210
+ @ Override
211
+ public AvroFieldReader asFieldReader (String name , boolean skipper ) {
212
+ return new FR (name , skipper );
213
+ }
214
+
215
+ private final static class FR extends AvroFieldReader {
216
+ public FR (String name , boolean skipper ) {
217
+ super (name , skipper );
218
+ }
219
+
220
+ @ Override
221
+ public JsonToken readValue (AvroReadContext parent , AvroParserImpl parser )
222
+ throws IOException {
223
+ return parser .setString (Character .toString ((char ) parser .decodeInt ()));
224
+ }
225
+
226
+ @ Override
227
+ public void skipValue (AvroParserImpl parser ) throws IOException {
228
+ parser .skipInt ();
229
+ }
230
+ }
231
+ }
197
232
198
233
protected final static class NullReader extends ScalarDecoder
199
234
{
0 commit comments