in protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/primitives/AbstractArrayTypeDecoder.java [275:314]
private static Object decodeAsObject(InputStream stream, StreamDecoderState state, int count) throws DecodeException {
final StreamTypeDecoder<?> decoder = state.getDecoder().readNextTypeDecoder(stream, state);
if (decoder instanceof PrimitiveTypeDecoder) {
final PrimitiveTypeDecoder<?> primitiveTypeDecoder = (PrimitiveTypeDecoder<?>) decoder;
if (primitiveTypeDecoder.isJavaPrimitive()) {
final Class<?> typeClass = decoder.getTypeClass();
if (Boolean.class.equals(typeClass)) {
return decodePrimitiveTypeArray((BooleanTypeDecoder) decoder, stream, state, count);
} else if (Byte.class.equals(typeClass)) {
return decodePrimitiveTypeArray((ByteTypeDecoder) decoder, stream, state, count);
} else if (Short.class.equals(typeClass)) {
return decodePrimitiveTypeArray((ShortTypeDecoder) decoder, stream, state, count);
} else if (Integer.class.equals(typeClass)) {
if (primitiveTypeDecoder.getTypeCode() == (EncodingCodes.INT & 0xff)) {
return decodePrimitiveTypeArray((Integer32TypeDecoder) decoder, stream, state, count);
} else {
return decodePrimitiveTypeArray((Integer8TypeDecoder) decoder, stream, state, count);
}
} else if (Long.class.equals(typeClass)) {
if (primitiveTypeDecoder.getTypeCode() == (EncodingCodes.LONG & 0xff)) {
return decodePrimitiveTypeArray((LongTypeDecoder) decoder, stream, state, count);
} else {
return decodePrimitiveTypeArray((Long8TypeDecoder) decoder, stream, state, count);
}
} else if (Double.class.equals(typeClass)) {
return decodePrimitiveTypeArray((DoubleTypeDecoder) decoder, stream, state, count);
} else if (Float.class.equals(typeClass)) {
return decodePrimitiveTypeArray((FloatTypeDecoder) decoder, stream, state, count);
} else if (Character.class.equals(typeClass)) {
return decodePrimitiveTypeArray((CharacterTypeDecoder) decoder, stream, state, count);
} else {
throw new DecodeException("Unexpected class " + decoder.getClass().getName());
}
}
}
return decodeNonPrimitiveArray(decoder, stream, state, count);
}