Example usage for com.google.gson Gson getAdapter

List of usage examples for com.google.gson Gson getAdapter

Introduction

In this page you can find the example usage for com.google.gson Gson getAdapter.

Prototype

public <T> TypeAdapter<T> getAdapter(Class<T> type) 

Source Link

Document

Returns the type adapter for type.

Usage

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;
}