From: Sébastien Lesaint Date: Wed, 4 Apr 2018 16:47:49 +0000 (+0200) Subject: add Request#getHeaders and #getParams() X-Git-Tag: 7.5~1179 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3bab57a379b1173cfdf9dc24913adf5d9f4fdcae;p=sonarqube.git add Request#getHeaders and #getParams() --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/ws/ServletRequest.java b/server/sonar-server/src/main/java/org/sonar/server/ws/ServletRequest.java index 4393dcc0e65..a5ca06d166b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ws/ServletRequest.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ws/ServletRequest.java @@ -25,6 +25,7 @@ import com.google.common.net.HttpHeaders; 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; @@ -152,4 +153,20 @@ public class ServletRequest extends ValidatingRequest { public Optional header(String name) { return Optional.ofNullable(source.getHeader(name)); } + + @Override + public Map getHeaders() { + ImmutableMap.Builder mapBuilder = ImmutableMap.builder(); + Enumeration headerNames = source.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String headerName = headerNames.nextElement(); + mapBuilder.put(headerName, source.getHeader(headerName)); + } + return mapBuilder.build(); + } + + @Override + public Map getParams() { + return source.getParameterMap(); + } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java index d8871047b06..67f52eba606 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java @@ -20,11 +20,13 @@ 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; @@ -128,6 +130,10 @@ public abstract class Request { @CheckForNull public abstract List paramAsStrings(String key); + public Map getParams() { + return ImmutableMap.of(); + } + @CheckForNull public abstract String param(String key); @@ -314,6 +320,10 @@ public abstract class Request { */ public abstract Optional header(String name); + public Map getHeaders() { + return ImmutableMap.of(); + } + /** * Allows a web service to call another web service. * @see LocalConnector diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/SimpleGetRequest.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/SimpleGetRequest.java index 47cab906952..0eb7767f753 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/SimpleGetRequest.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/SimpleGetRequest.java @@ -43,7 +43,7 @@ import static java.util.Objects.requireNonNull; */ public class SimpleGetRequest extends Request { - private final Map params = new HashMap<>(); + private final Map params = new HashMap<>(); private final Map parts = new HashMap<>(); private final Map headers = new HashMap<>(); private String mediaType = "application/json"; @@ -72,12 +72,13 @@ public class SimpleGetRequest extends Request { @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 multiParam(String key) { - String value = params.get(key); + String value = param(key); return value == null ? emptyList() : singletonList(value); } @@ -98,12 +99,13 @@ public class SimpleGetRequest extends Request { 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 getParams() { + @Override + public Map getParams() { return params; } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java index c1b2c1fcd9a..3aa51ed7be1 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java @@ -86,7 +86,9 @@ public class SimpleGetRequestTest { .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