@Override public Short unserialize(Reader reader, int tag, Type type) throws IOException { if (tag >= '0' && tag <= '9') return (short) (tag - '0'); if (tag == TagInteger) return (short) ValueReader.readInt(reader, TagSemicolon); switch (tag) { case TagLong: return (short) ValueReader.readLong(reader, TagSemicolon); case TagDouble: return Double.valueOf(ValueReader.readDouble(reader)).shortValue(); case TagEmpty: return 0; case TagTrue: return 1; case TagFalse: return 0; case TagUTF8Char: return Short.parseShort(ValueReader.readUTF8Char(reader)); case TagString: return Short.parseShort(ReferenceReader.readString(reader)); } return super.unserialize(reader, tag, type); }
static final Timestamp[] read(HproseReader reader, InputStream stream) throws IOException { int tag = stream.read(); switch (tag) { case TagNull: return null; case TagList: { int count = ValueReader.readInt(stream, TagOpenbrace); Timestamp[] a = new Timestamp[count]; reader.refer.set(a); for (int i = 0; i < count; ++i) { a[i] = TimestampUnserializer.read(reader, stream); } stream.read(); return a; } case TagRef: return (Timestamp[]) reader.readRef(stream); default: throw ValueReader.castError(reader.tagToString(tag), Array.class); } }