import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public Optional<String> header(String name) {
return Optional.ofNullable(source.getHeader(name));
}
+
+ @Override
+ public Map<String, String> getHeaders() {
+ ImmutableMap.Builder<String, String> mapBuilder = ImmutableMap.builder();
+ Enumeration<String> headerNames = source.getHeaderNames();
+ while (headerNames.hasMoreElements()) {
+ String headerName = headerNames.nextElement();
+ mapBuilder.put(headerName, source.getHeader(headerName));
+ }
+ return mapBuilder.build();
+ }
+
+ @Override
+ public Map<String, String[]> getParams() {
+ return source.getParameterMap();
+ }
}
package org.sonar.api.server.ws;
import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableMap;
import java.io.BufferedReader;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Consumer;
@CheckForNull
public abstract List<String> paramAsStrings(String key);
+ public Map<String, String[]> getParams() {
+ return ImmutableMap.of();
+ }
+
@CheckForNull
public abstract String param(String key);
*/
public abstract Optional<String> header(String name);
+ public Map<String, String> getHeaders() {
+ return ImmutableMap.of();
+ }
+
/**
* Allows a web service to call another web service.
* @see LocalConnector
*/
public class SimpleGetRequest extends Request {
- private final Map<String, String> params = new HashMap<>();
+ private final Map<String, String[]> params = new HashMap<>();
private final Map<String, Part> parts = new HashMap<>();
private final Map<String, String> headers = new HashMap<>();
private String mediaType = "application/json";
@Override
public String param(String key) {
- return params.get(key);
+ String[] strings = params.get(key);
+ return strings == null || strings.length == 0 ? null : strings[0];
}
@Override
public List<String> multiParam(String key) {
- String value = params.get(key);
+ String value = param(key);
return value == null ? emptyList() : singletonList(value);
}
public SimpleGetRequest setParam(String key, @Nullable String value) {
if (value != null) {
- params.put(key, value);
+ params.put(key, new String[] {value});
}
return this;
}
- public Map<String, String> getParams() {
+ @Override
+ public Map<String, String[]> getParams() {
return params;
}
.setParam("foo", "bar")
.setParam("fee", "beer");
- assertThat(underTest.getParams()).containsOnly(entry("foo", "bar"), entry("fee", "beer"));
+ assertThat(underTest.getParams()).containsOnly(
+ entry("foo", new String[] {"bar"}),
+ entry("fee", new String[] {"beer"}));
}
@Test