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")); + } }