in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/Hessian2Input.java [3130:3195]
public String readType()
throws IOException {
int code = _offset < _length ? (_buffer[_offset++] & 0xff) : read();
_offset--;
switch (code) {
case 0x00:
case 0x01:
case 0x02:
case 0x03:
case 0x04:
case 0x05:
case 0x06:
case 0x07:
case 0x08:
case 0x09:
case 0x0a:
case 0x0b:
case 0x0c:
case 0x0d:
case 0x0e:
case 0x0f:
case 0x10:
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
case 0x30:
case 0x31:
case 0x32:
case 0x33:
case BC_STRING_CHUNK:
case 'S': {
String type = readString();
if (_types == null)
_types = new ArrayList();
_types.add(type);
return type;
}
default: {
int ref = readInt();
if (_types.size() <= ref)
throw new IndexOutOfBoundsException("type ref #" + ref + " is greater than the number of valid types (" + _types.size() + ")");
return (String) _types.get(ref);
}
}
}