in sdk/core/azure-core-rest/src/main/java/com/azure/android/core/rest/HttpResponseMapper.java [398:426]
private Type tryExtractContentDecodeType(Type callbackTypeArg,
Type responseInterfaceType,
String swaggerMethodName) {
if (!responseInterfaceType.equals(Response.class) && !responseInterfaceType.equals(PagedResponse.class)) {
throw logger.logExceptionAsError(
new IllegalArgumentException("responseInterfaceType must be 'Response' or 'PagedResponse'"));
}
if (!TypeUtil.isTypeOrSubTypeOf(callbackTypeArg, responseInterfaceType)) {
return null;
}
Type responseTypeItr = callbackTypeArg;
while (!TypeUtil.getRawClass(responseTypeItr).equals(Object.class)) {
final Type[] responseArgTypes = TypeUtil.getTypeArguments(responseTypeItr);
if (responseArgTypes != null && responseArgTypes.length > 0) {
return responseArgTypes[responseArgTypes.length - 1];
}
if (TypeUtil.getRawClass(responseTypeItr).isInterface()) {
break;
}
responseTypeItr = TypeUtil.getSuperType(responseTypeItr);
}
throw logger.logExceptionAsError(new IllegalStateException(String.format(
NON_PARAMETERIZED_RESPONSE,
responseInterfaceType.toString(), Callback.class.getName(),
swaggerMethodName, responseInterfaceType .toString() + "<Foo>")));
}