Fixed issue 175 by adding default type adapters for StringBuilder and StringBuffer.
This commit is contained in:
parent
50a1191f90
commit
ea48a1debf
|
@ -87,6 +87,10 @@ final class DefaultTypeAdapters {
|
||||||
private static final NumberTypeAdapter NUMBER_TYPE_ADAPTER = new NumberTypeAdapter();
|
private static final NumberTypeAdapter NUMBER_TYPE_ADAPTER = new NumberTypeAdapter();
|
||||||
private static final ShortTypeAdapter SHORT_TYPE_ADAPTER = new ShortTypeAdapter();
|
private static final ShortTypeAdapter SHORT_TYPE_ADAPTER = new ShortTypeAdapter();
|
||||||
private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter();
|
private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter();
|
||||||
|
private static final StringBuilderTypeAdapter STRING_BUILDER_TYPE_ADAPTER =
|
||||||
|
new StringBuilderTypeAdapter();
|
||||||
|
private static final StringBufferTypeAdapter STRING_BUFFER_TYPE_ADAPTER =
|
||||||
|
new StringBufferTypeAdapter();
|
||||||
|
|
||||||
private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator();
|
private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator();
|
||||||
private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator();
|
private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator();
|
||||||
|
@ -138,6 +142,8 @@ final class DefaultTypeAdapters {
|
||||||
map.register(Short.class, SHORT_TYPE_ADAPTER);
|
map.register(Short.class, SHORT_TYPE_ADAPTER);
|
||||||
map.register(short.class, SHORT_TYPE_ADAPTER);
|
map.register(short.class, SHORT_TYPE_ADAPTER);
|
||||||
map.register(String.class, STRING_TYPE_ADAPTER);
|
map.register(String.class, STRING_TYPE_ADAPTER);
|
||||||
|
map.register(StringBuilder.class, STRING_BUILDER_TYPE_ADAPTER);
|
||||||
|
map.register(StringBuffer.class, STRING_BUFFER_TYPE_ADAPTER);
|
||||||
|
|
||||||
map.makeUnmodifiable();
|
map.makeUnmodifiable();
|
||||||
return map;
|
return map;
|
||||||
|
@ -189,6 +195,8 @@ final class DefaultTypeAdapters {
|
||||||
map.register(Short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
map.register(Short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
||||||
map.register(short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
map.register(short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));
|
||||||
map.register(String.class, wrapDeserializer(STRING_TYPE_ADAPTER));
|
map.register(String.class, wrapDeserializer(STRING_TYPE_ADAPTER));
|
||||||
|
map.register(StringBuilder.class, wrapDeserializer(STRING_BUILDER_TYPE_ADAPTER));
|
||||||
|
map.register(StringBuffer.class, wrapDeserializer(STRING_BUFFER_TYPE_ADAPTER));
|
||||||
|
|
||||||
map.makeUnmodifiable();
|
map.makeUnmodifiable();
|
||||||
return map;
|
return map;
|
||||||
|
@ -912,6 +920,40 @@ final class DefaultTypeAdapters {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class StringBuilderTypeAdapter
|
||||||
|
implements JsonSerializer<StringBuilder>, JsonDeserializer<StringBuilder> {
|
||||||
|
public JsonElement serialize(StringBuilder src, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
|
return new JsonPrimitive(src.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringBuilder deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
|
||||||
|
throws JsonParseException {
|
||||||
|
return new StringBuilder(json.getAsString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return StringBuilderTypeAdapter.class.getSimpleName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class StringBufferTypeAdapter
|
||||||
|
implements JsonSerializer<StringBuffer>, JsonDeserializer<StringBuffer> {
|
||||||
|
public JsonElement serialize(StringBuffer src, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
|
return new JsonPrimitive(src.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringBuffer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
|
||||||
|
throws JsonParseException {
|
||||||
|
return new StringBuffer(json.getAsString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return StringBufferTypeAdapter.class.getSimpleName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static class BooleanTypeAdapter
|
private static class BooleanTypeAdapter
|
||||||
implements JsonSerializer<Boolean>, JsonDeserializer<Boolean> {
|
implements JsonSerializer<Boolean>, JsonDeserializer<Boolean> {
|
||||||
public JsonElement serialize(Boolean src, Type typeOfSrc, JsonSerializationContext context) {
|
public JsonElement serialize(Boolean src, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
|
|
|
@ -429,4 +429,26 @@ public class DefaultTypeAdaptersTest extends TestCase {
|
||||||
TreeSet<String> treeSet = gson.fromJson(json, type);
|
TreeSet<String> treeSet = gson.fromJson(json, type);
|
||||||
assertTrue(treeSet.contains("Value1"));
|
assertTrue(treeSet.contains("Value1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testStringBuilderSerialization() {
|
||||||
|
StringBuilder sb = new StringBuilder("abc");
|
||||||
|
String json = gson.toJson(sb);
|
||||||
|
assertEquals("\"abc\"", json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStringBuilderDeserialization() {
|
||||||
|
StringBuilder sb = gson.fromJson("'abc'", StringBuilder.class);
|
||||||
|
assertEquals("abc", sb.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStringBufferSerialization() {
|
||||||
|
StringBuffer sb = new StringBuffer("abc");
|
||||||
|
String json = gson.toJson(sb);
|
||||||
|
assertEquals("\"abc\"", json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStringBufferDeserialization() {
|
||||||
|
StringBuffer sb = gson.fromJson("'abc'", StringBuffer.class);
|
||||||
|
assertEquals("abc", sb.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user