Skip to content

Commit 5cbcb24

Browse files
authored
Fixed ServiceCall.onMessage (#962)
* Fixed io.scalecube.services.ServiceCall.onMessage
1 parent d8e6546 commit 5cbcb24

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

services-api/src/main/java/io/scalecube/services/ServiceCall.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.scalecube.services.Reflect.requestType;
99
import static io.scalecube.services.Reflect.restMethod;
1010
import static io.scalecube.services.Reflect.serviceName;
11+
import static io.scalecube.services.TypeUtil.isWildcardType;
1112
import static io.scalecube.services.api.ServiceMessage.HEADER_PROPAGATE_DATA_TYPE_HEADER;
1213
import static io.scalecube.services.auth.Principal.NULL_PRINCIPAL;
1314

@@ -468,17 +469,16 @@ private static MethodInfo getMethodInfo(Class<?> serviceInterface, Method method
468469
}
469470

470471
private ServiceMessage onMessage(ServiceMessage message, Type returnType) {
471-
if (returnType == null) {
472-
return message;
472+
if (returnType != null) {
473+
final var dataType = isWildcardType(returnType) ? getDataType(message) : returnType;
474+
message = dataDecoder.decodeData(message, dataType);
473475
}
474476

475-
if (message.isError()) {
476-
throw Exceptions.propagate(
477-
errorMapper.toError(dataDecoder.decodeData(message, ErrorData.class)));
477+
if (message.isError() && message.hasData(ErrorData.class)) {
478+
throw Exceptions.propagate(errorMapper.toError(message));
478479
}
479480

480-
return dataDecoder.decodeData(
481-
message, TypeUtil.isWildcardType(returnType) ? getDataType(message) : returnType);
481+
return message;
482482
}
483483

484484
private Type getDataType(ServiceMessage message) {

0 commit comments

Comments
 (0)