Example usage for com.google.gson.reflect TypeToken get

List of usage examples for com.google.gson.reflect TypeToken get

Introduction

In this page you can find the example usage for com.google.gson.reflect TypeToken get.

Prototype

public static <T> TypeToken<T> get(Class<T> type) 

Source Link

Document

Gets type literal for the given Class instance.

Usage

From source file:com.jayway.jsonpath.internal.spi.mapper.GsonMappingProvider.java

License:Apache License

@Override
public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) {
    try {//from w ww.  j ava  2s .c  o m
        return (T) factory.createInstance().getAdapter(TypeToken.get(targetType.getType()))
                .fromJsonTree((JsonElement) source);
    } catch (Exception e) {
        throw new MappingException(e);
    }
}

From source file:com.jayway.jsonpath.spi.mapper.GsonMappingProvider.java

License:Apache License

@Override
public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) {
    try {/*w  w  w  .  j a  va 2s .co m*/
        return (T) factory.call().getAdapter(TypeToken.get(targetType.getType()))
                .fromJsonTree((JsonElement) source);
    } catch (Exception e) {
        throw new MappingException(e);
    }
}

From source file:com.jd.survey.web.settings.NowwebmanagerController.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override//  w w w.j  av  a 2s. co m
public void write(JsonWriter out, HibernateProxy value) throws IOException {
    if (value == null) {
        out.nullValue();
        return;
    }
    // Retrieve the original (not proxy) class  
    Class<?> baseType = Hibernate.getClass(value);
    // Get the TypeAdapter of the original class, to delegate the serialization  
    TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType));
    // Get a filled instance of the original class  
    Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation();
    // Serialize the value  
    delegate.write(out, unproxiedValue);
}

From source file:com.kotcrab.vis.editor.serializer.json.RuntimeTypeAdapterFactory.java

License:Apache License

public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
    if (baseType.isAssignableFrom(type.getRawType()) == false) {
        return null;
    }/*from  www . j a  va  2s  .  com*/

    final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<String, TypeAdapter<?>>();
    final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<Class<?>, TypeAdapter<?>>();
    for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) {
        TypeAdapter<?> delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue()));
        labelToDelegate.put(entry.getKey(), delegate);
        subtypeToDelegate.put(entry.getValue(), delegate);
    }

    return new TypeAdapter<R>() {
        @Override
        public R read(JsonReader in) throws IOException {
            JsonElement jsonElement = Streams.parse(in);
            JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName);
            if (labelJsonElement == null) {
                throw new JsonParseException("cannot deserialize " + baseType
                        + " because it does not define a field named " + typeFieldName);
            }
            String label = labelJsonElement.getAsString();
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label);
            if (delegate == null) {
                throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label
                        + "; did you forget to register a subtype?");
            }
            return delegate.fromJsonTree(jsonElement);
        }

        @Override
        public void write(JsonWriter out, R value) throws IOException {
            Class<?> srcType = value.getClass();
            String label = subtypeToLabel.get(srcType);
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType);
            if (delegate == null) {
                throw new JsonParseException(
                        "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?");
            }
            JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject();
            if (jsonObject.has(typeFieldName)) {
                throw new JsonParseException("cannot serialize " + srcType.getName()
                        + " because it already defines a field named " + typeFieldName);
            }
            JsonObject clone = new JsonObject();
            clone.add(typeFieldName, new JsonPrimitive(label));
            for (Map.Entry<String, JsonElement> e : jsonObject.entrySet()) {
                clone.add(e.getKey(), e.getValue());
            }
            Streams.write(clone, out);
        }
    };
}

From source file:com.kubeiwu.easyandroid.easyhttp.core.retrofit.GsonConverterFactory.java

License:Apache License

/** Create a converter for {@code type}. */
@Override//  w  ww.  j  a  va  2 s  .  c o m
public Converter<?> get(Type type) {
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
    return new GsonConverter<>(adapter, cache);
}

From source file:com.learn.mobile.library.dmobi.helper.RuntimeTypeAdapterFactory.java

License:Apache License

public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
    if (type.getRawType() != baseType) {
        return null;
    }/*from   w  w w  .jav a  2  s  .  c  o m*/

    final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<String, TypeAdapter<?>>();
    final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<Class<?>, TypeAdapter<?>>();
    for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) {
        TypeAdapter<?> delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue()));
        labelToDelegate.put(entry.getKey(), delegate);
        subtypeToDelegate.put(entry.getValue(), delegate);
    }

    return new TypeAdapter<R>() {
        @Override
        public R read(JsonReader in) throws IOException {
            JsonElement jsonElement = Streams.parse(in);
            // JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName);
            // Do not remove typeFieldName
            JsonElement labelJsonElement = jsonElement.getAsJsonObject().get(typeFieldName);

            if (labelJsonElement == null) {
                throw new JsonParseException("cannot deserialize " + baseType
                        + " because it does not define a field named " + typeFieldName);
            }
            String label = labelJsonElement.getAsString();
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label);
            if (delegate == null) {
                throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label
                        + "; did you forget to register a subtype?");
            }
            return delegate.fromJsonTree(jsonElement);
        }

        @Override
        public void write(JsonWriter out, R value) throws IOException {
            Class<?> srcType = value.getClass();
            String label = subtypeToLabel.get(srcType);
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType);
            if (delegate == null) {
                throw new JsonParseException(
                        "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?");
            }
            JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject();
            if (jsonObject.has(typeFieldName)) {
                throw new JsonParseException("cannot serialize " + srcType.getName()
                        + " because it already defines a field named " + typeFieldName);
            }
            JsonObject clone = new JsonObject();
            clone.add(typeFieldName, new JsonPrimitive(label));
            for (Map.Entry<String, JsonElement> e : jsonObject.entrySet()) {
                clone.add(e.getKey(), e.getValue());
            }
            Streams.write(clone, out);
        }
    }.nullSafe();
}

From source file:com.magnet.max.android.rest.marshalling.MagnetGsonConverterFactory.java

License:Apache License

/**
 * Create an instance using {@code gson} for conversion. Encoding to JSON and
 * decoding from JSON (when no charset is specified by a header) will use UTF-8.
 *//*from w  w w.  j  av a  2s  . co  m*/
//public static MagnetGsonConverterFactory create(Gson gson) {
//  return new MagnetGsonConverterFactory(gson);
//}
//
//private final Gson gson;
//
//private MagnetGsonConverterFactory(Gson gson) {
//  if (gson == null) {
//    gson = new GsonBuilder()
//        .setDateFormat(Iso8601DateConverter.ISO8601DateFormat_WITH_MS)
//            //.registerTypeAdapter(Date.class, new DateTypeAdapter())
//        .create();
//  };
//  this.gson = gson;
//}

@Override
public Converter<?> get(Type type) {
    TypeToken typeToken = TypeToken.get(type);
    return new MagnetGsonConverter<>(typeToken);
}

From source file:com.magnet.mmx.client.api.MMXMessage.java

License:Apache License

private static void parsePayload(String payloadType, String data, MMXMessage.Builder newMessage) {
    String payloadDataType = getPayloadTypeName(payloadType);
    if (null != payloadDataType) {
        Class payloadDataTypeClass = getPayloadType(payloadDataType);
        if (null != payloadDataTypeClass) {
            if (StringUtil.isNotEmpty(data)) {
                newMessage.payload((MMXTypedPayload) GsonDecorator.getInstance().fromJson(data,
                        TypeToken.get(payloadDataTypeClass)));
            } else {
                Log.e(TAG, "Payload is empty for type " + payloadDataType);
            }/*  ww w . ja va  2s .c  om*/
        } else {
            Log.e(TAG, "Payload type " + payloadDataType + " is not registered");
        }
    }
}

From source file:com.maneater.app.sport.net.core.GsonConverterFactory.java

License:Apache License

@Override
public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
    return new GsonRequestBodyConverter(gson, adapter);
}

From source file:com.maneater.app.sport.net.core.GsonResponseBodyConverter.java

License:Apache License

GsonResponseBodyConverter(Gson gson, Type type) {
    adapter = gson.getAdapter(TypeToken.get(type));
}