CitrusFramework 2.7.6 - Поддержка списка параметров с тем же именем параметра - PullRequest
0 голосов
/ 22 ноября 2018

В инфраструктуре цитрусовых до 2.7.5, несколько параметров запроса могли быть отправлены в HttpClientRequestActionBuilder, где, как в 2.7.6, это не может быть, он использует Set.

После того, как я посмотрел исходный код, обнаружил, что в 2.7.6

       public HttpMessage queryParam(String name, String value) {
            if (!StringUtils.hasText(name)) {
                throw new CitrusRuntimeException("Invalid query param name -         must not be empty!");
    }

    this.queryParams.put(name, value);

    String queryParamString = queryParams.entrySet()
                                         .stream()
                                         .map(entry -> entry.getKey() + (entry.getValue() != null ? "=" + entry.getValue() : ""))
                                         .collect(Collectors.joining(","));

    header(HttpMessageHeaders.HTTP_QUERY_PARAMS, queryParamString);
    header(DynamicEndpointUriResolver.QUERY_PARAM_HEADER_NAME, queryParamString);

    return this;
}

, где, как и в выпуске до 2.7.6, это было

    public HttpMessage queryParam(String name, String value) {
            if (!StringUtils.hasText(name)) {
                throw new CitrusRuntimeException("Invalid query param name - must not be empty!");
    }

    String queryParams;
    if (getHeader(HttpMessageHeaders.HTTP_QUERY_PARAMS) != null) {
        queryParams = getHeader(HttpMessageHeaders.HTTP_QUERY_PARAMS).toString();
        queryParams += "," + name + (StringUtils.hasText(value) ? "=" + value : "");
    } else {
        queryParams = name + (StringUtils.hasText(value) ? "=" + value : "");
    }

    header(HttpMessageHeaders.HTTP_QUERY_PARAMS, queryParams);
    header(DynamicEndpointUriResolver.QUERY_PARAM_HEADER_NAME, queryParams);

    return this;
}

В результате, если я использую queryParam ("paramName", "value1"). QueryParam ("paramName "," value2 "), тогда отправляется только paramName с" Value1 ", а не" value2 ".

Могу я спросить, почему эта функция удалена или есть ли обходной путь?

...