public Object readObject()

in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/BasicDeserializer.java [148:270]


    public Object readObject(AbstractHessianInput in)
            throws IOException {
        if (in.checkAndReadNull()) {
            return null;
        }
        switch (_code) {
            case NULL:
                // hessian/3490
                in.readObject();

                return null;

            case BOOLEAN:
                return Boolean.valueOf(in.readBoolean());

            case BYTE:
                return Byte.valueOf((byte) in.readInt());

            case SHORT:
                return Short.valueOf((short) in.readInt());

            case INTEGER:
                return Integer.valueOf(in.readInt());

            case LONG:
                return Long.valueOf(in.readLong());

            case FLOAT:
                return Float.valueOf((float) in.readDouble());

            case DOUBLE:
                return Double.valueOf(in.readDouble());

            case STRING:
                return in.readString();

            case OBJECT:
                return in.readObject();

            case CHARACTER: {
                String s = in.readString();
                if (s == null || s.equals(""))
                    return Character.valueOf((char) 0);
                else
                    return Character.valueOf(s.charAt(0));
            }

            case CHARACTER_OBJECT: {
                String s = in.readString();
                if (s == null || s.equals(""))
                    return null;
                else
                    return Character.valueOf(s.charAt(0));
            }

            case DATE:
                return new Date(in.readUTCDate());

            case NUMBER:
                return in.readObject();

            case BYTE_ARRAY:
                return in.readBytes();

            case CHARACTER_ARRAY: {
                String s = in.readString();

                if (s == null)
                    return null;
                else {
                    int len = s.length();
                    char[] chars = new char[len];
                    s.getChars(0, len, chars, 0);
                    return chars;
                }
            }

            case BOOLEAN_ARRAY:
            case SHORT_ARRAY:
            case INTEGER_ARRAY:
            case LONG_ARRAY:
            case FLOAT_ARRAY:
            case DOUBLE_ARRAY:
            case STRING_ARRAY: {
                int code = in.readListStart();

                switch (code) {
                    case 'N':
                        return null;

                    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:
                        int length = code - 0x10;
                        in.readInt();

                        return readLengthList(in, length);

                    default:
                        String type = in.readType();
                        length = in.readLength();

                        return readList(in, length);
                }
            }

            default:
                throw new UnsupportedOperationException();
        }
    }