This is an automated email from the ASF dual-hosted git repository.
liujun 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 9c4017e Merge pull request #1761, add Locale serialize & deserialize
support.
9c4017e is described below
commit 9c4017e9ba7ba170262f388ac159bcccb11ce209
Author: nzomkxia <[email protected]>
AuthorDate: Mon May 14 14:06:40 2018 +0800
Merge pull request #1761, add Locale serialize & deserialize support.
Fixed #906
---
.../dubbo/common/json/GenericJSONConverter.java | 21 +++++++++++++++++++++
.../com/alibaba/dubbo/common/json/JSONTest.java | 9 +++++++++
2 files changed, 30 insertions(+)
diff --git
a/dubbo-common/src/main/java/com/alibaba/dubbo/common/json/GenericJSONConverter.java
b/dubbo-common/src/main/java/com/alibaba/dubbo/common/json/GenericJSONConverter.java
index 8a67d71..02553aa 100644
---
a/dubbo-common/src/main/java/com/alibaba/dubbo/common/json/GenericJSONConverter.java
+++
b/dubbo-common/src/main/java/com/alibaba/dubbo/common/json/GenericJSONConverter.java
@@ -28,6 +28,7 @@ import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -358,6 +359,24 @@ public class GenericJSONConverter implements JSONConverter
{
}
};
GlobalDecoderMap.put(Date.class, d);
+
+ d = new Decoder() {
+ @Override
+ public Object decode(Object jv) throws IOException {
+ if (jv instanceof String) {
+ String[] items = ((String)jv).split("_");
+ if(items.length == 1){
+ return new Locale(items[0]);
+ }
+ if(items.length == 2){
+ return new Locale(items[0], items[1]);
+ }
+ return new Locale(items[0], items[1], items[2]);
+ }
+ return (Locale)null;
+ }
+ };
+ GlobalDecoderMap.put(Locale.class, d);
}
@Override
@@ -407,6 +426,8 @@ public class GenericJSONConverter implements JSONConverter {
writeValue(item, jb, writeClass);
}
jb.arrayEnd();
+ } else if(obj instanceof Locale) {
+ jb.valueString(obj.toString());
} else {
jb.objectBegin();
diff --git
a/dubbo-common/src/test/java/com/alibaba/dubbo/common/json/JSONTest.java
b/dubbo-common/src/test/java/com/alibaba/dubbo/common/json/JSONTest.java
index bc45e87..cf631ee 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/json/JSONTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/json/JSONTest.java
@@ -24,6 +24,7 @@ import java.io.StringWriter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import static org.junit.Assert.assertEquals;
@@ -169,6 +170,14 @@ public class JSONTest {
assertEquals(test[0], 1);
}
+ @Test
+ public void testLocale() throws Exception {
+ Locale obj = Locale.US;
+ String str = JSON.json(obj);
+ assertEquals("\"en_US\"", str);
+ assertEquals(obj, JSON.parse(str, Locale.class));
+ }
+
public static class Bean1 {
public int[] array;
private String name, displayName;
--
To stop receiving notification emails like this one, please contact
[email protected].