Fix previous commit's byte[] handling

This commit is contained in:
Oleg Zhurakousky
2021-09-23 16:04:00 +02:00
parent c6dccc9d05
commit bc6ca20116

View File

@@ -73,8 +73,7 @@ class MessageAwareJsonDecoder extends AbstractDecoder<Object> {
if (messageMap.containsKey(FunctionRSocketUtils.PAYLOAD)) {
Type requestedType = FunctionTypeUtils.getGenericType(targetType.getType());
Object payload;
if (String.class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))
|| byte[].class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))) {
if (String.class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))) {
Object rawPayload = messageMap.get(FunctionRSocketUtils.PAYLOAD);
if (rawPayload instanceof byte[]) {
payload = new String((byte[]) rawPayload, StandardCharsets.UTF_8);
@@ -83,9 +82,31 @@ class MessageAwareJsonDecoder extends AbstractDecoder<Object> {
payload = rawPayload;
}
}
else if (byte[].class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))) {
Object rawPayload = messageMap.get(FunctionRSocketUtils.PAYLOAD);
if (rawPayload instanceof String) {
payload = ((String) rawPayload).getBytes(StandardCharsets.UTF_8);
}
else {
payload = rawPayload;
}
}
else {
payload = this.jsonMapper.fromJson(messageMap.get(FunctionRSocketUtils.PAYLOAD), requestedType);
}
// if (String.class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))
// || byte[].class.isAssignableFrom(FunctionTypeUtils.getRawType(targetType.getType()))) {
// Object rawPayload = messageMap.get(FunctionRSocketUtils.PAYLOAD);
// if (rawPayload instanceof byte[]) {
// payload = new String((byte[]) rawPayload, StandardCharsets.UTF_8);
// }
// else {
// payload = rawPayload;
// }
// }
// else {
// payload = this.jsonMapper.fromJson(messageMap.get(FunctionRSocketUtils.PAYLOAD), requestedType);
// }
if (FunctionTypeUtils.isMessage(targetType.getType())) {
return MessageBuilder.withPayload(payload).copyHeaders(