protected Object readObjectValue()

in core/src/main/java/flex/messaging/io/amf/Amf3Input.java [130:225]


    protected Object readObjectValue(int type) throws ClassNotFoundException, IOException {
        Object value = null;

        switch (type) {
            case kStringType:
                ClassUtil.validateCreation(String.class);

                value = readString();
                if (isDebug)
                    trace.writeString((String) value);
                break;

            case kObjectType:
                value = readScriptObject();
                break;

            case kArrayType:
                value = readArray();
                break;

            case kFalseType:
                ClassUtil.validateCreation(Boolean.class);

                value = Boolean.FALSE;

                if (isDebug)
                    trace.write(value);
                break;

            case kTrueType:
                ClassUtil.validateCreation(Boolean.class);

                value = Boolean.TRUE;

                if (isDebug)
                    trace.write(value);
                break;

            case kIntegerType:
                ClassUtil.validateCreation(Integer.class);

                int i = readUInt29();
                // Symmetric with writing an integer to fix sign bits for negative values...
                i = (i << 3) >> 3;
                value = new Integer(i);

                if (isDebug)
                    trace.write(value);
                break;

            case kDoubleType:
                value = Double.valueOf(readDouble());
                break;

            case kUndefinedType:
                if (isDebug)
                    trace.writeUndefined();
                break;

            case kNullType:
                if (isDebug)
                    trace.writeNull();
                break;

            case kXMLType:
            case kAvmPlusXmlType:
                value = readXml();
                break;

            case kDateType:
                value = readDate();
                break;

            case kByteArrayType:
                value = readByteArray();
                break;

            case kDictionaryType:
                value = readDictionary();
                break;

            case kTypedVectorInt:
            case kTypedVectorUint:
            case kTypedVectorDouble:
            case kTypedVectorObject:
                value = readTypedVector(type);
                break;
            default:
                // Unknown object type tag {type}
                UnknownTypeException ex = new UnknownTypeException();
                ex.setMessage(10301, new Object[]{new Integer(type)});
                throw ex;
        }

        return value;
    }