fixed issue 46 by adding toString() methods to Gson, serializers, deserializers, and instanceCreators, and default type adapters.
This commit is contained in:
parent
973696cbf5
commit
7da18b96e8
|
@ -191,6 +191,14 @@ final class DefaultTypeAdapters {
|
|||
throw new JsonParseException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(DefaultDateTypeAdapter.class.getSimpleName());
|
||||
sb.append('(').append(format.getClass().getSimpleName()).append(')');
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -218,6 +226,10 @@ final class DefaultTypeAdapters {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return EnumTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class UrlTypeAdapter implements JsonSerializer<URL>, JsonDeserializer<URL>,
|
||||
|
@ -240,6 +252,10 @@ final class DefaultTypeAdapters {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return UrlTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class UriTypeAdapter implements JsonSerializer<URI>, JsonDeserializer<URI> {
|
||||
|
@ -254,6 +270,10 @@ final class DefaultTypeAdapters {
|
|||
throw new JsonParseException(e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return UriTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class LocaleTypeAdapter implements JsonSerializer<Locale>,
|
||||
|
@ -288,6 +308,10 @@ final class DefaultTypeAdapters {
|
|||
public Locale createInstance(Type type) {
|
||||
return new Locale("en_US");
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return LocaleTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -317,6 +341,10 @@ final class DefaultTypeAdapters {
|
|||
public Map createInstance(Type type) {
|
||||
return new LinkedHashMap();
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return MapTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class BigDecimalTypeAdapter implements JsonSerializer<BigDecimal>,
|
||||
|
@ -334,6 +362,10 @@ final class DefaultTypeAdapters {
|
|||
public BigDecimal createInstance(Type type) {
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return BigDecimalTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class BigIntegerTypeAdapter implements JsonSerializer<BigInteger>,
|
||||
|
@ -351,65 +383,109 @@ final class DefaultTypeAdapters {
|
|||
public BigInteger createInstance(Type type) {
|
||||
return new BigInteger("0");
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return BigIntegerTypeAdapter.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class LongCreator implements InstanceCreator<Long> {
|
||||
public Long createInstance(Type type) {
|
||||
return new Long(0L);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return LongCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class IntegerCreator implements InstanceCreator<Integer> {
|
||||
public Integer createInstance(Type type) {
|
||||
return new Integer(0);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return IntegerCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class ShortCreator implements InstanceCreator<Short> {
|
||||
public Short createInstance(Type type) {
|
||||
return new Short((short) 0);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return ShortCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class ByteCreator implements InstanceCreator<Byte> {
|
||||
public Byte createInstance(Type type) {
|
||||
return new Byte((byte) 0);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return ByteCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class FloatCreator implements InstanceCreator<Float> {
|
||||
public Float createInstance(Type type) {
|
||||
return new Float(0F);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return FloatCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class DoubleCreator implements InstanceCreator<Double> {
|
||||
public Double createInstance(Type type) {
|
||||
return new Double(0D);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return DoubleCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class CharacterCreator implements InstanceCreator<Character> {
|
||||
public Character createInstance(Type type) {
|
||||
return new Character((char) 0);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return CharacterCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class BooleanCreator implements InstanceCreator<Boolean> {
|
||||
public Boolean createInstance(Type type) {
|
||||
return new Boolean(false);
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return BooleanCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class LinkedListCreator implements InstanceCreator<LinkedList<?>> {
|
||||
public LinkedList<?> createInstance(Type type) {
|
||||
return new LinkedList<Object>();
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return LinkedListCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
private static class TreeSetCreator implements InstanceCreator<TreeSet<?>> {
|
||||
public TreeSet<?> createInstance(Type type) {
|
||||
return new TreeSet<Object>();
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return TreeSetCreator.class.getSimpleName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -401,4 +401,18 @@ public final class Gson {
|
|||
throw new JsonParseException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("{");
|
||||
sb.append("serializeNulls:").append(serializeNulls);
|
||||
sb.append(",serializers:").append(serializers);
|
||||
sb.append(",deserializers:").append(deserializers);
|
||||
// using the name instanceCreator instead of ObjectConstructor since the users of Gson are
|
||||
// more familiar with the concept of Instance Creators. Moreover, the objectConstructor is
|
||||
// just a utility class around instance creators, and its toString() only displays them.
|
||||
sb.append(",instanceCreators:").append(objectConstructor);
|
||||
sb.append("}");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,4 +63,9 @@ class JsonDeserializerExceptionWrapper<T> implements JsonDeserializer<T> {
|
|||
throw new JsonParseException(errorMsg.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return delegate.toString();
|
||||
}
|
||||
}
|
|
@ -61,4 +61,9 @@ class JsonSerializerExceptionWrapper<T> implements JsonSerializer<T> {
|
|||
throw new JsonParseException(errorMsg.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return delegate.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.lang.reflect.Array;
|
|||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
@ -106,4 +107,9 @@ final class MappedObjectConstructor implements ObjectConstructor {
|
|||
}
|
||||
instanceCreatorMap.register(typeOfT, creator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return instanceCreatorMap.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,4 +90,24 @@ final class ParameterizedTypeHandlerMap<T> {
|
|||
public synchronized Set<Map.Entry<Type, T>> entrySet() {
|
||||
return map.entrySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("{");
|
||||
boolean first = true;
|
||||
for (Map.Entry<Type, T> entry : map.entrySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
sb.append(',');
|
||||
}
|
||||
sb.append(typeToString(entry.getKey())).append(':');
|
||||
sb.append(entry.getValue());
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String typeToString(Type type) {
|
||||
return TypeUtils.toRawClass(type).getSimpleName();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue