This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 218f6e9cc82caff3f16219fd211865aaae3fd85a
Author: wujimin <wuji...@huawei.com>
AuthorDate: Wed Jul 11 09:28:44 2018 +0800

    [SCB-728] enhance HttpServletRequestEx to support adjust form data
---
 .../vertx/http/HttpServletRequestEx.java           |  4 ++++
 .../vertx/http/StandardHttpServletRequestEx.java   |  5 +++++
 .../VertxServerRequestToHttpServletRequest.java    | 24 ++++++++++++++++++++++
 .../http/TestStandardHttpServletRequestEx.java     | 17 +++++++++++++++
 ...TestVertxServerRequestToHttpServletRequest.java | 18 ++++++++++++++++
 5 files changed, 68 insertions(+)

diff --git 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/HttpServletRequestEx.java
 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/HttpServletRequestEx.java
index 61a3b2c..d2f62f2 100644
--- 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/HttpServletRequestEx.java
+++ 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/HttpServletRequestEx.java
@@ -27,4 +27,8 @@ public interface HttpServletRequestEx extends 
HttpServletRequest, BodyBufferSupp
   default void addHeader(String name, String value) {
 
   }
+
+  default void setParameter(String name, String value) {
+
+  }
 }
diff --git 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
index f9b29ca..359bfae 100644
--- 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
+++ 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
@@ -169,4 +169,9 @@ public class StandardHttpServletRequestEx extends 
HttpServletRequestWrapper impl
 
     return parameterMap;
   }
+
+  @Override
+  public void setParameter(String name, String value) {
+    getParameterMap().put(name, new String[] {value});
+  }
 }
diff --git 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
index f198587..9274bc2 100644
--- 
a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
+++ 
b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
@@ -107,10 +107,24 @@ public class VertxServerRequestToHttpServletRequest 
extends AbstractHttpServletR
 
   @Override
   public String getParameter(String name) {
+    if (parameterMap != null) {
+      String[] values = parameterMap.get(name);
+      return values == null ? null : values[0];
+    }
+
     return this.vertxRequest.getParam(name);
   }
 
   @Override
+  public Enumeration<String> getParameterNames() {
+    if (parameterMap != null) {
+      return Collections.enumeration(parameterMap.keySet());
+    }
+
+    return Collections.enumeration(this.vertxRequest.params().names());
+  }
+
+  @Override
   public String[] getParameterValues(String name) {
     if (parameterMap != null) {
       return parameterMap.get(name);
@@ -136,6 +150,16 @@ public class VertxServerRequestToHttpServletRequest 
extends AbstractHttpServletR
   }
 
   @Override
+  public void setParameter(String name, String value) {
+    if (parameterMap != null) {
+      parameterMap.put(name, new String[] {value});
+      return;
+    }
+
+    vertxRequest.params().set(name, value);
+  }
+
+  @Override
   public String getScheme() {
     return this.vertxRequest.scheme();
   }
diff --git 
a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestStandardHttpServletRequestEx.java
 
b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestStandardHttpServletRequestEx.java
index f87e83c..cbc2a38 100644
--- 
a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestStandardHttpServletRequestEx.java
+++ 
b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestStandardHttpServletRequestEx.java
@@ -37,6 +37,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import io.vertx.core.buffer.Buffer;
+import mockit.Deencapsulation;
 import mockit.Expectations;
 import mockit.Mocked;
 
@@ -132,4 +133,20 @@ public class TestStandardHttpServletRequestEx {
     Assert.assertThat(requestEx.getParameterValues("p1"), 
Matchers.arrayContaining("v1-1", "v1-2", "v1-3"));
     Assert.assertEquals("v1-1", requestEx.getParameter("p1"));
   }
+
+  @Test
+  public void setParameter() {
+    Map<String, String[]> parameterMap = new HashMap<>();
+    Deencapsulation.setField(requestEx, "parameterMap", parameterMap);
+
+    requestEx.setParameter("k1", "v1");
+    requestEx.setParameter("k2", "v2");
+
+    Assert.assertEquals("v1", requestEx.getParameter("k1"));
+    Assert.assertEquals("v2", requestEx.getParameter("k2"));
+
+    Assert.assertSame(parameterMap, requestEx.getParameterMap());
+
+    Assert.assertThat(Collections.list(requestEx.getParameterNames()), 
Matchers.contains("k1", "k2"));
+  }
 }
diff --git 
a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
 
b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
index df72215..2e98a83 100644
--- 
a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
+++ 
b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.vertx.http;
 
 import java.io.IOException;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
@@ -452,4 +453,21 @@ public class TestVertxServerRequestToHttpServletRequest {
 
     Assert.assertEquals("ce", request.getCharacterEncoding());
   }
+
+
+  @Test
+  public void setParameter() {
+    Map<String, String[]> parameterMap = new HashMap<>();
+    Deencapsulation.setField(request, "parameterMap", parameterMap);
+
+    request.setParameter("k1", "v1");
+    request.setParameter("k2", "v2");
+
+    Assert.assertEquals("v1", request.getParameter("k1"));
+    Assert.assertEquals("v2", request.getParameter("k2"));
+
+    Assert.assertSame(parameterMap, request.getParameterMap());
+
+    Assert.assertThat(Collections.list(request.getParameterNames()), 
Matchers.contains("k1", "k2"));
+  }
 }

Reply via email to