List of usage examples for com.google.gson Gson getAdapter
public <T> TypeAdapter<T> getAdapter(Class<T> type)
From source file:RestrictSerializationToBaseClassFactory.java
License:Apache License
@Override public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> type) { Class incoming = type.getRawType(); if (subClasses != null) { boolean matched = false; for (Class<? extends B> subClass : subClasses) { if (incoming == subClass) { matched = true;/*from w w w. j a v a2s.com*/ break; } } if (!matched) return null; } else { // restricting all sub-classes since none specified // don't match the baseClass since we want to use the default factory for it if (incoming == baseClass || !baseClass.isAssignableFrom(incoming)) return null; } TypeAdapter<T> adapter = new TypeAdapter<T>() { @Override public T read(JsonReader reader) throws IOException { final TypeAdapter subAdapter = gson.getDelegateAdapter(RestrictSerializationToBaseClassFactory.this, type); return (T) subAdapter.read(reader); } @Override public void write(JsonWriter writer, T value) throws IOException { final TypeAdapter<B> baseAdapter = gson.getAdapter(baseClass); baseAdapter.write(writer, (B) value); } }; return adapter; }
From source file:ch.uzh.ifi.seal.soprafs15.group_00_android.models.gson.AutoValueAdapterFactory.java
License:Apache License
@SuppressWarnings("unchecked") @Override/*from w w w. j a v a 2s . c o m*/ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { Class<? super T> rawType = type.getRawType(); if (!rawType.isAnnotationPresent(AutoGson.class)) { return null; } String packageName = rawType.getPackage().getName(); String className = rawType.getName().substring(packageName.length() + 1).replace('$', '_'); String autoValueName = packageName + ".AutoParcel_" + className; try { Class<?> autoValueType = Class.forName(autoValueName); return (TypeAdapter<T>) gson.getAdapter(autoValueType); } catch (ClassNotFoundException e) { throw new RuntimeException("Could not load AutoParcel type " + autoValueName, e); } }
From source file:cmput301w15t07.TravelTracker.util.DeletionFlagTypeAdapterFactory.java
License:Apache License
@SuppressWarnings("unchecked") @Override//from ww w . j a va2 s . c o m public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { // TODO technically isAssignableFrom is deprecated and we should change // it. Maybe some time in the future. if (!DeletionFlag.class.isAssignableFrom(type.getRawType())) { return null; } Log.d("TypeAdapter", "Good type: " + type.getRawType().getCanonicalName()); for (Type param : ((ParameterizedType) type.getType()).getActualTypeArguments()) { Log.d("TypeAdapter", "Parameter type: " + param.toString()); } // Get the parameterizing type Type elementType = ((ParameterizedType) type.getType()).getActualTypeArguments()[0]; // Get adapters specific to the object we need so that we can delegate TypeAdapter<?> documentAdapter = gson.getAdapter(TypeToken.get(elementType)); return (TypeAdapter<T>) new DeletionFlagAdapter<Document>((TypeAdapter<Document>) documentAdapter); }
From source file:cn.ieclipse.af.demo.sample.volley.adapter.CollectionsAdapter.java
License:Apache License
@Override public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) { Type type = typeToken.getType(); Class<? super T> rawType = typeToken.getRawType(); if (!Collection.class.isAssignableFrom(rawType)) { return null; }/* w w w . j ava2 s . c om*/ Type elementType = $Gson$Types.getCollectionElementType(type, rawType); TypeAdapter<?> elementTypeAdapter = gson.getAdapter(TypeToken.get(elementType)); ObjectConstructor<T> constructor = constructorConstructor.get(typeToken); @SuppressWarnings({ "unchecked", "rawtypes" }) // create() doesn't define a type parameter TypeAdapter<T> result = new Adapter(gson, elementType, elementTypeAdapter, constructor); return result; }
From source file:co.aurasphere.botmill.kik.util.json.LowerCaseTypeAdapterFactory.java
License:Open Source License
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class); final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type); return new TypeAdapter<T>() { @Override/*from ww w . jav a2s .c om*/ public T read(JsonReader in) throws IOException { JsonElement tree = elementAdapter.read(in); afterRead(tree); return delegate.fromJsonTree(tree); } @Override public void write(JsonWriter out, T value) throws IOException { JsonElement tree = delegate.toJsonTree(value); beforeWrite(value, tree); elementAdapter.write(out, tree); } protected void beforeWrite(T source, JsonElement toSerialize) { } protected void afterRead(JsonElement deserialized) { if (deserialized instanceof JsonObject) { JsonObject jsonObject = ((JsonObject) deserialized); Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet(); for (Map.Entry<String, JsonElement> entry : entrySet) { if (entry.getValue() instanceof JsonElement) { if (entry.getKey().equalsIgnoreCase("type")) { String val = jsonObject.get(entry.getKey()).toString(); jsonObject.addProperty(entry.getKey(), val.toLowerCase()); } } else { afterRead(entry.getValue()); } } } } }; }
From source file:co.cask.cdap.common.stream.StreamEventTypeAdapter.java
License:Apache License
/** * Register an instance of the {@link StreamEventTypeAdapter} to the given {@link GsonBuilder}. * @param gsonBuilder The build to register to * @return The same {@link GsonBuilder} instance in the argument *///from w w w .j ava 2s. c o m public static GsonBuilder register(GsonBuilder gsonBuilder) { return gsonBuilder.registerTypeAdapterFactory(new TypeAdapterFactory() { @Override @SuppressWarnings("unchecked") public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { if (StreamEvent.class.isAssignableFrom(type.getRawType())) { return (TypeAdapter<T>) new StreamEventTypeAdapter(gson.getAdapter(HEADERS_TYPE)); } return null; } }); }
From source file:com.android.fastlibrary.util.AutoValueAdapterFactory.java
License:Apache License
@SuppressWarnings("unchecked") @Override/* w w w . j a v a 2 s . c o m*/ public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> type) { Class<? super T> rawType = type.getRawType(); if (!rawType.isAnnotationPresent(AutoGson.class)) { return null; } String packageName = rawType.getPackage().getName(); String className = rawType.getName().substring(packageName.length() + 1).replace('$', '_'); String autoValueName = packageName + ".AutoValue_" + className; try { Class<?> autoValueType = Class.forName(autoValueName); return (TypeAdapter<T>) gson.getAdapter(autoValueType); } catch (ClassNotFoundException e) { throw new RuntimeException("Could not load AutoValue type " + autoValueName, e); } }
From source file:com.auth0.android.request.internal.SimpleRequest.java
License:Open Source License
public SimpleRequest(HttpUrl url, OkHttpClient client, Gson gson, String httpMethod, TypeToken<T> typeToken, ErrorBuilder<U> errorBuilder) { super(url, client, gson, gson.getAdapter(typeToken), errorBuilder); this.method = httpMethod; }
From source file:com.auth0.android.request.internal.SimpleRequest.java
License:Open Source License
public SimpleRequest(HttpUrl url, OkHttpClient client, Gson gson, String httpMethod, Class<T> clazz, ErrorBuilder<U> errorBuilder) { super(url, client, gson, gson.getAdapter(clazz), errorBuilder); this.method = httpMethod; }
From source file:com.auth0.android.request.internal.SimpleRequest.java
License:Open Source License
public SimpleRequest(HttpUrl url, OkHttpClient client, Gson gson, String httpMethod, ErrorBuilder<U> errorBuilder) { super(url, client, gson, gson.getAdapter(new TypeToken<T>() { }), errorBuilder);/*from w ww . j a v a2 s.c o m*/ this.method = httpMethod; }