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 09:41:42 UTC
[incubator-dubbo] branch master updated: support char[] for generic
invoke, #2003 (#2138)
This is an automated email from the ASF dual-hosted git repository.
yiji pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new ee7870c support char[] for generic invoke, #2003 (#2138)
ee7870c is described below
commit ee7870c5a452629634345b36493bcc8848c6fa5f
Author: Jerrick Zhu <di...@gmail.com>
AuthorDate: Thu Jul 26 17:41:36 2018 +0800
support char[] for generic invoke, #2003 (#2138)
---
.../org/apache/dubbo/common/utils/CompatibleTypeUtils.java | 13 +++++++++++++
.../apache/dubbo/common/utils/CompatibleTypeUtilsTest.java | 11 +++++++++++
2 files changed, 24 insertions(+)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/CompatibleTypeUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/CompatibleTypeUtils.java
index 424cead..14a0a79 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/CompatibleTypeUtils.java
+++ b/dubbo-common/src/main/java/org/apache/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/org/apache/dubbo/common/utils/CompatibleTypeUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/CompatibleTypeUtilsTest.java
index 8c51e02..fc18ac7 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/CompatibleTypeUtilsTest.java
+++ b/dubbo-common/src/test/java/org/apache/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);
}
{