]> source.dussan.org Git - sonarqube.git/commitdiff
add Request#getHeaders and #getParams()
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 4 Apr 2018 16:47:49 +0000 (18:47 +0200)
committerSonarTech <sonartech@sonarsource.com>
Tue, 15 May 2018 18:20:51 +0000 (20:20 +0200)
server/sonar-server/src/main/java/org/sonar/server/ws/ServletRequest.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/internal/SimpleGetRequest.java
sonar-plugin-api/src/test/java/org/sonar/api/server/ws/internal/SimpleGetRequestTest.java

index 4393dcc0e6584e241436a769281787f375d2ca1a..a5ca06d166b279586c8a33a0a447081d90d59557 100644 (file)
@@ -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<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();
+  }
 }
index d8871047b065c0c3ee5350cd075c8a197110476d..67f52eba60623e5b065bf6ccbb298c38d80e9012 100644 (file)
 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<String> paramAsStrings(String key);
 
+  public Map<String, String[]> getParams() {
+    return ImmutableMap.of();
+  }
+
   @CheckForNull
   public abstract String param(String key);
 
@@ -314,6 +320,10 @@ public abstract class Request {
    */
   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
index 47cab906952199487e99da8d628182de89561ce9..0eb7767f75322d9a89f7701e354b94d4da1fd129 100644 (file)
@@ -43,7 +43,7 @@ import static java.util.Objects.requireNonNull;
  */
 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";
@@ -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<String> 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<String, String> getParams() {
+  @Override
+  public Map<String, String[]> getParams() {
     return params;
   }
 
index c1b2c1fcd9a6416af24adf61f862b0afb1aabd6a..3aa51ed7be1d4748691c1f595aa39aabc63d2036 100644 (file)
@@ -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