private Pair extractContentAndHeaderDecodeType()

in sdk/core/azure-core-rest/src/main/java/com/azure/android/core/rest/HttpResponseMapper.java [297:341]


    private Pair<Type, Type> extractContentAndHeaderDecodeType(Type callbackType, String swaggerMethodName) {
        final Type callbackTypeArgument = TypeUtil.getTypeArgument(callbackType);

        // Pair<Type:HeaderDecodeType, Type:ContentDecodeType>
        Pair<Type, Type> decodeTypes;

        decodeTypes = tryExtractContentAndHeaderDecodeType(callbackTypeArgument,
            ResponseBase.class,
            swaggerMethodName);

        if (decodeTypes != null) {
            return decodeTypes;
        }

        decodeTypes = tryExtractContentAndHeaderDecodeType(callbackTypeArgument,
            PagedResponseBase.class,
            swaggerMethodName);

        if (decodeTypes != null) {
            return decodeTypes;
        }

        Type decodeType;

        decodeType = tryExtractContentDecodeType(callbackTypeArgument,
            PagedResponse.class,
            swaggerMethodName);

        if (decodeType != null) {
            return Pair.create(null, decodeType);
        }

        decodeType = tryExtractContentDecodeType(callbackTypeArgument,
            Response.class,
            swaggerMethodName);

        if (decodeType != null) {
            return Pair.create(null, decodeType);
        }

        throw logger.logExceptionAsError(new IllegalStateException("The type argument of "
            + Callback.class.getName()
            + " in the method " + swaggerMethodName
            + " must either ResponseBase<H, C>, PagedResponseBase<H, C>, PagedResponse<C> or Response<C>"));
    }