You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by yi...@apache.org on 2018/07/26 08:40:50 UTC
[incubator-dubbo] branch 2.6.x updated: support char[] for generic
invoke #2003 (#2137)
This is an automated email from the ASF dual-hosted git repository.
yiji pushed a commit to branch 2.6.x
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/2.6.x by this push:
new 0882c83 support char[] for generic invoke #2003 (#2137)
0882c83 is described below
commit 0882c83bb9c772966d57cbf161a60ec3633f1e1e
Author: Jerrick Zhu <di...@gmail.com>
AuthorDate: Thu Jul 26 16:40:32 2018 +0800
support char[] for generic invoke #2003 (#2137)
* support char[] for generic invoke, #2003
* add null or empty string testcase
---
.../com/alibaba/dubbo/common/utils/CompatibleTypeUtils.java | 13 +++++++++++++
.../alibaba/dubbo/common/utils/CompatibleTypeUtilsTest.java | 11 +++++++++++
2 files changed, 24 insertions(+)
diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtils.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtils.java
index 3d54a3e..3f9356f 100644
--- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtils.java
+++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtils.java
@@ -91,6 +91,19 @@ public class CompatibleTypeUtils {
} catch (ClassNotFoundException e) {
throw new RuntimeException(e.getMessage(), e);
}
+ } else if (char[].class.equals(type)) {
+ // Process string to char array for generic invoke
+ // See
+ // - https://github.com/apache/incubator-dubbo/issues/2003
+ if (string == null) {
+ return null;
+ }
+ else {
+ int len = string.length();
+ char[] chars = new char[len];
+ string.getChars(0, len, chars, 0);
+ return chars;
+ }
}
} else if (value instanceof Number) {
Number number = (Number) value;
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtilsTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtilsTest.java
index 4b230e9..63efc5b 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtilsTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CompatibleTypeUtilsTest.java
@@ -67,6 +67,17 @@ public class CompatibleTypeUtilsTest {
result = CompatibleTypeUtils.compatibleTypeConvert("2011-12-11 12:24:12", Date.class);
assertEquals(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-12-11 12:24:12"), (Date) result);
+
+ result = CompatibleTypeUtils.compatibleTypeConvert("ab", char[].class);
+ assertEquals(2, ((char[]) result).length);
+ assertEquals('a', ((char[]) result)[0]);
+ assertEquals('b', ((char[]) result)[1]);
+
+ result = CompatibleTypeUtils.compatibleTypeConvert("", char[].class);
+ assertEquals(0, ((char[]) result).length);
+
+ result = CompatibleTypeUtils.compatibleTypeConvert(null, char[].class);
+ assertEquals(null, result);
}
{