private HashMap extractResponseParameters()

in aws-xray-recorder-sdk-aws-sdk-v2/src/main/java/com/amazonaws/xray/interceptors/TracingInterceptor.java [202:245]


    private HashMap<String, Object> extractResponseParameters(
        Context.AfterExecution context, ExecutionAttributes executionAttributes) {
        HashMap<String, Object> parameters = new HashMap<>();

        AWSOperationHandler operationHandler = getOperationHandler(executionAttributes);
        if (operationHandler == null) {
            return parameters;
        }

        if (operationHandler.getResponseParameters() != null) {
            operationHandler.getResponseParameters().forEach((parameterName) -> {
                SdkResponse response = context.response();
                Optional<Object> parameterValue = response.getValueForField(parameterName, Object.class);
                if (parameterValue.isPresent()) {
                    parameters.put(normalizeParameterName(
                            SNAKE_CASE_NAMING_STRATEGY.translate(parameterName)), parameterValue.get());
                }
            });
        }

        if (operationHandler.getResponseDescriptors() != null) {
            operationHandler.getResponseDescriptors().forEach((key, descriptor) -> {
                if (descriptor.isMap() && descriptor.shouldGetKeys()) {
                    SdkResponse response = context.response();
                    Optional<Map> parameterValue = response.getValueForField(key, Map.class);
                    if (parameterValue.isPresent()) {
                        String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
                        parameters.put(normalizeParameterName(
                                SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().keySet());
                    }
                } else if (descriptor.isList() && descriptor.shouldGetCount()) {
                    SdkResponse response = context.response();
                    Optional<List> parameterValue = response.getValueForField(key, List.class);
                    if (parameterValue.isPresent()) {
                        String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
                        parameters.put(normalizeParameterName(
                                SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().size());
                    }
                }
            });
        }

        return parameters;
    }