in protonj2/src/main/java/org/apache/qpid/protonj2/codec/encoders/ProtonEncoder.java [670:707]
private void writeUnregisteredType(ProtonBuffer buffer, EncoderState state, Object value) {
if (value.getClass().isArray()) {
Class<?> componentType = value.getClass().getComponentType();
if (componentType.isPrimitive()) {
if (componentType == Boolean.TYPE) {
writeArray(buffer, state, (boolean[]) value);
} else if (componentType == Byte.TYPE) {
writeArray(buffer, state, (byte[]) value);
} else if (componentType == Short.TYPE) {
writeArray(buffer, state, (short[]) value);
} else if (componentType == Integer.TYPE) {
writeArray(buffer, state, (int[]) value);
} else if (componentType == Long.TYPE) {
writeArray(buffer, state, (long[]) value);
} else if (componentType == Float.TYPE) {
writeArray(buffer, state, (float[]) value);
} else if (componentType == Double.TYPE) {
writeArray(buffer, state, (double[]) value);
} else if (componentType == Character.TYPE) {
writeArray(buffer, state, (char[]) value);
} else {
throw new IllegalArgumentException(
"Cannot write arrays of type " + componentType.getName());
}
} else {
writeArray(buffer, state, (Object[]) value);
}
} else if (value instanceof List) {
writeList(buffer, state, (List<Object>) value);
} else if (value instanceof Map) {
writeMap(buffer, state, (Map<Object, Object>) value);
} else if (value instanceof DescribedType) {
writeDescribedType(buffer, state, (DescribedType) value);
} else {
throw new IllegalArgumentException(
"Do not know how to write Objects of class " + value.getClass().getName());
}
}