in openwire-core/src/main/java/org/apache/activemq/openwire/utils/OpenWireMarshallingSupport.java [166:226]
public static Object unmarshalPrimitive(DataInput in, boolean force) throws IOException {
Object value = null;
byte type = in.readByte();
switch (type) {
case BYTE_TYPE:
value = Byte.valueOf(in.readByte());
break;
case BOOLEAN_TYPE:
value = in.readBoolean() ? Boolean.TRUE : Boolean.FALSE;
break;
case CHAR_TYPE:
value = Character.valueOf(in.readChar());
break;
case SHORT_TYPE:
value = Short.valueOf(in.readShort());
break;
case INTEGER_TYPE:
value = Integer.valueOf(in.readInt());
break;
case LONG_TYPE:
value = Long.valueOf(in.readLong());
break;
case FLOAT_TYPE:
value = new Float(in.readFloat());
break;
case DOUBLE_TYPE:
value = new Double(in.readDouble());
break;
case BYTE_ARRAY_TYPE:
value = new byte[in.readInt()];
in.readFully((byte[]) value);
break;
case STRING_TYPE:
if (force) {
value = in.readUTF();
} else {
value = readUTF(in, in.readUnsignedShort());
}
break;
case BIG_STRING_TYPE: {
if (force) {
value = readUTF8(in);
} else {
value = readUTF(in, in.readInt());
}
break;
}
case MAP_TYPE:
value = unmarshalPrimitiveMap(in, true);
break;
case LIST_TYPE:
value = unmarshalPrimitiveList(in, true);
break;
case NULL:
value = null;
break;
default:
throw new IOException("Unknown primitive type: " + type);
}
return value;
}