You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/02/17 00:53:59 UTC
[servicecomb-java-chassis] 01/04: [SCB-1748] support colon
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/servicecomb-java-chassis.git
commit ac817791d4de614d0161c2485c3dcb2c56ac6e2d
Author: GuoYL <gy...@gmail.com>
AuthorDate: Fri Feb 7 14:39:05 2020 +0800
[SCB-1748] support colon
---
.../servicecomb/common/rest/codec/param/PathProcessorCreator.java | 7 ++++++-
.../servicecomb/common/rest/codec/param/TestPathProcessor.java | 7 +++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/PathProcessorCreator.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/PathProcessorCreator.java
index 7ddddbf..896e870 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/PathProcessorCreator.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/PathProcessorCreator.java
@@ -17,7 +17,9 @@
package org.apache.servicecomb.common.rest.codec.param;
+import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
+import java.net.URLDecoder;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -41,7 +43,7 @@ public class PathProcessorCreator implements ParamValueProcessorCreator {
}
@Override
- public Object getValue(HttpServletRequest request) {
+ public Object getValue(HttpServletRequest request) throws UnsupportedEncodingException {
@SuppressWarnings("unchecked")
Map<String, String> pathVarMap = (Map<String, String>) request.getAttribute(RestConst.PATH_PARAMETERS);
if (pathVarMap == null) {
@@ -52,6 +54,9 @@ public class PathProcessorCreator implements ParamValueProcessorCreator {
if (value == null) {
return null;
}
+ if (value.contains(":")) {
+ return convertValue(URLDecoder.decode(value, "UTF-8"), targetType);
+ }
return convertValue(HttpUtils.uriDecodePath(value), targetType);
}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestPathProcessor.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestPathProcessor.java
index 19cca94..443a04a 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestPathProcessor.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/param/TestPathProcessor.java
@@ -101,6 +101,13 @@ public class TestPathProcessor {
}
@Test
+ public void testGetColon() throws Exception {
+ prepareGetValue("name", String.class);
+ pathVars.put("name", "aa:bb");
+ Assert.assertEquals("aa:bb", processor.getValue(request));
+ }
+
+ @Test
public void testGetProcessorType() {
createProcessor("name", String.class);
Assert.assertEquals("path", processor.getProcessorType());