]> source.dussan.org Git - sonarqube.git/commitdiff
add Request#getReader()
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 3 Apr 2018 16:18:38 +0000 (18:18 +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
server/sonar-server/src/test/java/org/sonar/server/ws/TestRequest.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java

index a73fcdc0fb33a82e6b9e78bb3419b9e3c8e95c63..4393dcc0e6584e241436a769281787f375d2ca1a 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.server.ws;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.net.HttpHeaders;
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
@@ -66,6 +68,15 @@ public class ServletRequest extends ValidatingRequest {
         MediaTypes.DEFAULT));
   }
 
+  @Override
+  public BufferedReader getReader() {
+    try {
+      return source.getReader();
+    } catch (IOException e) {
+      throw new IllegalStateException("Failed to read", e);
+    }
+  }
+
   @Override
   public boolean hasParam(String key) {
     return source.getParameterMap().containsKey(key);
index e859b1be1133b584c473849b6a3191d33dba1f64..ef7c5a732480399a525ba24761c70cba8fca7fa5 100644 (file)
@@ -24,7 +24,9 @@ import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Maps;
 import com.google.protobuf.GeneratedMessageV3;
+import java.io.BufferedReader;
 import java.io.InputStream;
+import java.io.StringReader;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,6 +36,7 @@ import org.sonar.api.server.ws.internal.PartImpl;
 import org.sonar.api.server.ws.internal.ValidatingRequest;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
 import static java.util.Objects.requireNonNull;
 import static org.sonarqube.ws.MediaTypes.PROTOBUF;
 
@@ -43,10 +46,31 @@ public class TestRequest extends ValidatingRequest {
   private final Map<String, String> params = new HashMap<>();
   private final Map<String, String> headers = new HashMap<>();
   private final Map<String, Part> parts = Maps.newHashMap();
+  private String payload = "";
+  private boolean payloadConsumed = false;
   private String method = "GET";
   private String mimeType = "application/octet-stream";
   private String path;
 
+  @Override
+  public BufferedReader getReader() {
+    checkState(!payloadConsumed, "Payload already consumed");
+    if (payload == null) {
+      return super.getReader();
+    }
+
+    BufferedReader res = new BufferedReader(new StringReader(payload));
+    payloadConsumed = true;
+    return res;
+  }
+
+  public TestRequest setPayload(String payload) {
+    checkState(!payloadConsumed, "Payload already consumed");
+
+    this.payload = payload;
+    return this;
+  }
+
   @Override
   protected String readParam(String key) {
     return params.get(key);
index 8d659db949f53d81f96790e2483ac3be4e5f2270..d8871047b065c0c3ee5350cd075c8a197110476d 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.api.server.ws;
 
 import com.google.common.base.Splitter;
+import java.io.BufferedReader;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Date;
@@ -52,6 +53,10 @@ public abstract class Request {
    */
   public abstract String method();
 
+  public BufferedReader getReader() {
+    throw new UnsupportedOperationException("getReader not supported");
+  }
+
   /**
    * Returns the requested MIME type, or {@code "application/octet-stream"} if not specified.
    */