Add test to verify issue 309.
diff --git a/gson/src/test/java/com/google/gson/functional/MapTest.java b/gson/src/test/java/com/google/gson/functional/MapTest.java
index ca77d0b..16bd779 100755
--- a/gson/src/test/java/com/google/gson/functional/MapTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MapTest.java
@@ -19,10 +19,13 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
+import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.common.TestTypes;
+import com.google.gson.internal.$Gson$Types;
import com.google.gson.reflect.TypeToken;
import junit.framework.TestCase;
@@ -200,6 +203,29 @@
assertEquals("2", map.get("b"));
}
+ public void testCustomSerializerForSpecificMapType() {
+ Type type = $Gson$Types.newParameterizedTypeWithOwner(
+ null, Map.class, String.class, Long.class);
+ Gson gson = new GsonBuilder()
+ .registerTypeAdapter(type, new JsonSerializer<Map<String, Long>>() {
+ public JsonElement serialize(Map<String, Long> src, Type typeOfSrc,
+ JsonSerializationContext context) {
+ JsonArray array = new JsonArray();
+ for (long value : src.values()) {
+ array.add(new JsonPrimitive(value));
+ }
+ return array;
+ }
+ }).create();
+
+ Map<String, Long> src = new LinkedHashMap<String, Long>();
+ src.put("one", 1L);
+ src.put("two", 2L);
+ src.put("three", 3L);
+
+ assertEquals("[1,2,3]", gson.toJson(src, type));
+ }
+
/**
* Created in response to http://code.google.com/p/google-gson/issues/detail?id=99
*/