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.dubic.codesnippets.application.GsonMessageConverter.java

/**
 * Return the Gson {@link TypeToken} for the specified type.
 * <p>/* w w w  .  j  a  va 2 s. co  m*/
 * The default implementation returns {@code TypeToken.get(type)}, but this
 * can be overridden in subclasses to allow for custom generic collection
 * handling. For instance:
 * <pre class="code">
 * protected TypeToken<?> getTypeToken(Type type) { if (type instanceof
 * Class && List.class.isAssignableFrom((Class<?>) type)) { return new
 * TypeToken<ArrayList<MyBean>>() {}; } else { return
 * super.getTypeToken(type); } }
 * </pre>
 *
 * @param type the type for which to return the TypeToken
 * @return the type token
 */
protected TypeToken<?> getTypeToken(Type type) {
    return TypeToken.get(type);
}

From source file:com.ecwid.mailchimp.internal.gson.MailChimpObjectTypeAdapter.java

License:Apache License

@Override
public MailChimpObject read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NULL) {
        in.nextNull();//www . j  av a 2  s  . c o  m
        return null;
    }

    MailChimpObject result;
    try {
        result = constructor.newInstance();
    } catch (Exception e) {
        throw new RuntimeException("Failed to invoke " + constructor + " with no args", e);
    }

    in.beginObject();
    while (in.hasNext()) {
        final String key;
        if (in.peek() == JsonToken.NAME) {
            key = in.nextName();
        } else {
            key = in.nextString();
        }

        final Object value;

        Type valueType = result.getReflectiveMappingTypes().get(key);
        if (valueType != null) {
            value = gson.getAdapter(TypeToken.get(valueType)).read(in);
        } else {
            if (in.peek() == JsonToken.BEGIN_OBJECT) {
                value = gson.getAdapter(MailChimpObject.class).read(in);
            } else if (in.peek() == JsonToken.BEGIN_ARRAY) {
                value = readList(in);
            } else {
                value = gson.getAdapter(Object.class).read(in);
            }
        }

        if (result.put(key, value) != null) {
            throw new JsonSyntaxException("duplicate key: " + key);
        }
    }
    in.endObject();

    return result;
}

From source file:com.etermax.conversations.repository.impl.elasticsearch.mapper.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  .  j a  v  a2 s . co  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);
            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.example.gitnb.api.retrofit.converter.GsonConverterFactory.java

License:Apache License

@Override
public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
    return new GsonResponseBodyConverter<>(adapter);
}

From source file:com.example.gitnb.api.retrofit.converter.GsonConverterFactory.java

License:Apache License

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

From source file:com.example.killnono.common.datacore.net.converter.json.XJsonConverterFactory.java

License:Open Source License

@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations,
        Retrofit retrofit) {//from  ww  w .j  a v  a  2 s.  com
    TypeToken<?> typeToken = TypeToken.get(type);
    if (typeToken.getRawType() == JSONObject.class) {
        return new JsonResponseBodyConverter<JSONObject>();
    } else if (typeToken.getRawType() == JSONArray.class) {
        return new JsonArrayResponseBodyConverter<JSONArray>();
    } else {
        try {
            throw new Throwable("?");
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            return null;
        }
    }

}

From source file:com.example.killnono.common.datacore.net.converter.maplist.JsonConverterFactory.java

License:Open Source License

@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations,
        Retrofit retrofit) {//from   ww  w. j  a v  a 2 s. c om
    TypeToken<?> typeToken = TypeToken.get(type);
    if (typeToken.getRawType() == JSONObject.class) {
        return new JsonResponseBodyConverter<JSONObject>();
    } else if (typeToken.getRawType() == JSONArray.class) {
        return new ListResponseBodyConverter<JSONArray>();
    } else {
        try {
            throw new Throwable("?");
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            return null;
        }
    }

}

From source file:com.fangzhi.app.network.http.converter.GsonConverterFactory.java

License:Apache License

@Override
public Converter<ResponseBody, ?> responseBodyConverter(final Type type, Annotation[] annotations,
        Retrofit retrofit) {/*  w  ww.j  ava  2s .  c  om*/
    Type newType = new ParameterizedType() {
        @Override
        public Type[] getActualTypeArguments() {
            return new Type[] { type };
        }

        @Override
        public Type getOwnerType() {
            return null;
        }

        @Override
        public Type getRawType() {
            return ApiModel.class;
        }
    };
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(newType));
    return new GsonResponseBodyConverter<>(adapter);
}

From source file:com.flipkart.android.proteus.demo.converter.GsonRequestBodyConverter.java

License:Apache License

private TypeAdapter<T> getAdapter() {
    if (null == typeAdapter) {
        //noinspection unchecked
        typeAdapter = (TypeAdapter<T>) gson.getAdapter(TypeToken.get(type));
    }/*from   ww  w .j a  v a  2  s  . c  o  m*/
    return typeAdapter;
}

From source file:com.flipkart.android.proteus.demo.converter.UrlEncodedGsonRequestBodyConverter.java

License:Apache License

@Override
public RequestBody convert(T value) throws IOException {
    //noinspection unchecked
    TypeAdapter<T> adapter = (TypeAdapter<T>) gson.getAdapter(TypeToken.get(type));
    Writer writer = new StringWriter();
    JsonWriter jsonWriter = gson.newJsonWriter(writer);
    adapter.write(jsonWriter, value);/*w  ww.  j  a  v  a 2s .  com*/
    jsonWriter.close();
    return RequestBody.create(MEDIA_TYPE, URLEncoder.encode(writer.toString(), "UTF-8").getBytes());
}