private Type tryExtractContentDecodeType()

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>")));
    }