in proton-j/src/main/java/org/apache/qpid/proton/codec/ArrayType.java [1077:1128]
private static Object decodeArrayAsObject(final DecoderImpl decoder, final int count)
{
TypeConstructor constructor = decoder.readConstructor(true);
if(constructor.encodesJavaPrimitive())
{
if (count > decoder.getByteBufferRemaining()) {
throw new IllegalArgumentException("Array element count "+count+" is specified to be greater than the amount of data available ("+
decoder.getByteBufferRemaining()+")");
}
if(constructor instanceof BooleanType.BooleanEncoding)
{
return decodeBooleanArray((BooleanType.BooleanEncoding) constructor, count);
}
else if(constructor instanceof ByteType.ByteEncoding)
{
return decodeByteArray((ByteType.ByteEncoding)constructor, count);
}
else if(constructor instanceof ShortType.ShortEncoding)
{
return decodeShortArray((ShortType.ShortEncoding)constructor, count);
}
else if(constructor instanceof IntegerType.IntegerEncoding)
{
return decodeIntArray((IntegerType.IntegerEncoding)constructor, count);
}
else if(constructor instanceof LongType.LongEncoding)
{
return decodeLongArray((LongType.LongEncoding) constructor, count);
}
else if(constructor instanceof FloatType.FloatEncoding)
{
return decodeFloatArray((FloatType.FloatEncoding) constructor, count);
}
else if(constructor instanceof DoubleType.DoubleEncoding)
{
return decodeDoubleArray((DoubleType.DoubleEncoding)constructor, count);
}
else if(constructor instanceof CharacterType.CharacterEncoding)
{
return decodeCharArray((CharacterType.CharacterEncoding)constructor, count);
}
else
{
throw new ClassCastException("Unexpected class " + constructor.getClass().getName());
}
}
else
{
return decodeNonPrimitive(decoder, constructor, count);
}
}