Skip to content

Commit 23f09ff

Browse files
committed
Fixed bug in ServiceCall
1 parent d8e6546 commit 23f09ff

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

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

Lines changed: 11 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

@@ -469,16 +470,19 @@ private static MethodInfo getMethodInfo(Class<?> serviceInterface, Method method
469470

470471
private ServiceMessage onMessage(ServiceMessage message, Type returnType) {
471472
if (returnType == null) {
472-
return message;
473+
return throwIfError(message);
474+
} else {
475+
return throwIfError(
476+
dataDecoder.decodeData(
477+
message, isWildcardType(returnType) ? getDataType(message) : returnType));
473478
}
479+
}
474480

475-
if (message.isError()) {
476-
throw Exceptions.propagate(
477-
errorMapper.toError(dataDecoder.decodeData(message, ErrorData.class)));
481+
private ServiceMessage throwIfError(ServiceMessage message) {
482+
if (message.isError() && message.hasData(ErrorData.class)) {
483+
throw Exceptions.propagate(errorMapper.toError(message));
478484
}
479-
480-
return dataDecoder.decodeData(
481-
message, TypeUtil.isWildcardType(returnType) ? getDataType(message) : returnType);
485+
return message;
482486
}
483487

484488
private Type getDataType(ServiceMessage message) {

0 commit comments

Comments
 (0)