com.google.gson.Gson#getAdapter ( )源码实例Demo

下面列出了com.google.gson.Gson#getAdapter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

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;
    }
    Type elementType = $Gson$Types.getCollectionElementType(type, rawType);

    TypeAdapter<?> elementTypeAdapter = gson.getAdapter(TypeToken.get(elementType));
    ObjectConstructor<T> constructor = constructorConstructor.get(typeToken);

    @SuppressWarnings({ "unchecked", "rawtypes" })
    TypeAdapter<T> result = new Adapter(elementTypeAdapter, constructor);
    return result;
}
 
源代码2 项目: framework   文件: MapTypeAdapterFactory.java
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
  Type type = typeToken.getType();

  Class<? super T> rawType = typeToken.getRawType();
  if (!Map.class.isAssignableFrom(rawType)) {
    return null;
  }

  Class<?> rawTypeOfSrc = $Gson$Types.getRawType(type);
  Type[] keyAndValueTypes = $Gson$Types.getMapKeyAndValueTypes(type, rawTypeOfSrc);
  TypeAdapter<?> keyAdapter = getKeyAdapter(gson, keyAndValueTypes[0]);
  TypeAdapter<?> valueAdapter = gson.getAdapter(TypeToken.get(keyAndValueTypes[1]));
  ObjectConstructor<T> constructor = constructorConstructor.get(typeToken);

  @SuppressWarnings({"unchecked", "rawtypes"})
  // we don't define a type parameter for the key or value types
  TypeAdapter<T> result = new Adapter(gson, keyAndValueTypes[0], keyAdapter,
      keyAndValueTypes[1], valueAdapter, constructor);
  return result;
}
 
@Override
@SuppressWarnings("unchecked")
public <A> TypeAdapter<A> create(Gson gson, TypeToken<A> typeToken) {
    Type type = typeToken.getType();
    boolean isXor = typeToken.getRawType() == Xor.class;
    boolean isParameterized = type instanceof ParameterizedType;
    boolean isSSHResult = ResultSSHResultTypeAdapterFactory.isResultSSHResult(type);
    if (isXor && isParameterized && !isSSHResult) {
        Type leftType = ((ParameterizedType) type).getActualTypeArguments()[0];
        Type rightType = ((ParameterizedType) type).getActualTypeArguments()[1];
        TypeAdapter<?> rightAdapter = gson.getAdapter(TypeToken.get(rightType));
        if (leftType.equals(SaltError.class)) {
            return (TypeAdapter<A>) errorAdapter(rightAdapter);
        }

        TypeAdapter<?> leftAdapter = gson.getAdapter(TypeToken.get(leftType));
        return (TypeAdapter<A>) xorAdapter(leftAdapter, rightAdapter);
    } else {
        return null;
    }
}
 
源代码4 项目: gson   文件: ArrayTypeAdapter.java
@SuppressWarnings({"unchecked", "rawtypes"})
@Override public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
  Type type = typeToken.getType();
  if (!(type instanceof GenericArrayType || type instanceof Class && ((Class<?>) type).isArray())) {
    return null;
  }

  Type componentType = $Gson$Types.getArrayComponentType(type);
  TypeAdapter<?> componentTypeAdapter = gson.getAdapter(TypeToken.get(componentType));
  return new ArrayTypeAdapter(
          gson, componentTypeAdapter, $Gson$Types.getRawType(componentType));
}
 
源代码5 项目: homeassist   文件: AlwaysListTypeAdapterFactory.java
@Override
public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> typeToken) {
    // If it's not a List -- just delegate the job to Gson and let it pick the best type adapter itself
    if (!List.class.isAssignableFrom(typeToken.getRawType())) {
        return null;
    }
    // Resolving the list parameter type
    final Type elementType = resolveTypeArgument(typeToken.getType());
    @SuppressWarnings("unchecked") final TypeAdapter<E> elementTypeAdapter = (TypeAdapter<E>) gson.getAdapter(TypeToken.get(elementType));
    // Note that the always-list type adapter is made null-safe, so we don't have to check nulls ourselves
    @SuppressWarnings("unchecked") final TypeAdapter<T> alwaysListTypeAdapter = (TypeAdapter<T>) new AlwaysListTypeAdapter<>(elementTypeAdapter).nullSafe();
    return alwaysListTypeAdapter;
}
 
源代码6 项目: yawp   文件: CustomTypeAdapterFactory.java
private TypeAdapter<T> createAdapter(Gson gson, TypeToken<T> _type) {
    final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, _type);
    final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
    return new TypeAdapter<T>() {
        @Override
        public void write(JsonWriter out, T value) throws IOException {
            CustomTypeAdapterFactory.this.write(out, value, elementAdapter, delegate);
        }

        @Override
        public T read(JsonReader in) throws IOException {
            return CustomTypeAdapterFactory.this.read(in, elementAdapter, delegate);
        }
    };
}
 
源代码7 项目: molgenis   文件: AutoValueTypeAdapterFactory.java
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
  Class<? super T> rawType = type.getRawType();

  AutoGson annotation = rawType.getAnnotation(AutoGson.class);
  // Only deserialize classes decorated with @AutoGson.
  if (annotation == null) {
    return null;
  }

  return (TypeAdapter<T>) gson.getAdapter(annotation.autoValueClass());
}
 
源代码8 项目: letv   文件: MapTypeAdapterFactory.java
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
    Type type = typeToken.getType();
    if (!Map.class.isAssignableFrom(typeToken.getRawType())) {
        return null;
    }
    Type[] keyAndValueTypes = C$Gson$Types.getMapKeyAndValueTypes(type, C$Gson$Types.getRawType(type));
    return new Adapter(gson, keyAndValueTypes[0], getKeyAdapter(gson, keyAndValueTypes[0]), keyAndValueTypes[1], gson.getAdapter(TypeToken.get(keyAndValueTypes[1])), this.constructorConstructor.getConstructor(typeToken));
}
 
源代码9 项目: framework   文件: ReflectiveTypeAdapterFactory.java
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
  JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
  if (annotation != null) {
    TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
    if (adapter != null) return adapter;
  }
  return gson.getAdapter(fieldType);
}
 
源代码10 项目: che   文件: SerializableInterfaceAdapterFactory.java
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
  if (Serializable.class.equals(type.getRawType())) {
    return (TypeAdapter<T>) new SerializableAdapter(gson.getAdapter(Object.class));
  }
  return null;
}
 
源代码11 项目: auto-matter   文件: AutoMatterTypeAdapter.java
static <T> AutoMatterTypeAdapter<T> createForInterface(
    final Gson gson,
    final Class<T> cls,
    final Map<String, List<String>> serializedNameMethods
) {
  return new AutoMatterTypeAdapter<>(gson, gson.getAdapter(cls), serializedNameMethods);
}
 
源代码12 项目: MiBandDecompiled   文件: MapTypeAdapterFactory.java
private TypeAdapter a(Gson gson, Type type)
{
    if (type == Boolean.TYPE || type == java/lang/Boolean)
    {
        return TypeAdapters.BOOLEAN_AS_STRING;
    } else
    {
        return gson.getAdapter(TypeToken.get(type));
    }
}
 
源代码13 项目: lsp4j   文件: TupleTypeAdapters.java
@SuppressWarnings("unchecked")
public TwoTypeAdapter(Gson gson, TypeToken<Two<F, S>> typeToken) {
	Type[] elementTypes = TypeUtils.getElementTypes(typeToken, Two.class);
	this.first = gson.getAdapter((TypeToken<F>) TypeToken.get(elementTypes[0]));
	this.second = gson.getAdapter((TypeToken<S>) TypeToken.get(elementTypes[1]));
}
 
源代码14 项目: geogson   文件: FeatureCollectionAdapter.java
public FeatureCollectionAdapter(Gson gson) {
    this.gson = gson;
    this.featureAdapter = gson.getAdapter(Feature.class);
}
 
源代码15 项目: letv   文件: MapTypeAdapterFactory.java
private TypeAdapter<?> getKeyAdapter(Gson context, Type keyType) {
    return (keyType == Boolean.TYPE || keyType == Boolean.class) ? TypeAdapters.BOOLEAN_AS_STRING : context.getAdapter(TypeToken.get(keyType));
}
 
源代码16 项目: jus   文件: GsonRequest.java
public GsonRequest(String method, String url, Class<T> tClass, Gson gson) {
    this(method, url, gson.getAdapter(tClass));
}
 
源代码17 项目: Auth0.Android   文件: VoidRequest.java
public VoidRequest(HttpUrl url, OkHttpClient client, Gson gson, String httpMethod, ErrorBuilder<U> errorBuilder) {
    super(url, client, gson, gson.getAdapter(Void.class), errorBuilder);
    this.httpMethod = httpMethod;
}
 
源代码18 项目: geogson   文件: GeometryAdapterFactory.java
private GeometryAdapter(Gson gson) {
    this.geometryAdapter = gson.getAdapter(Geometry.class);
    this.positionsAdapter = gson.getAdapter(Positions.class);
}
 
源代码19 项目: Auth0.Android   文件: SimpleRequest.java
public SimpleRequest(HttpUrl url, OkHttpClient client, Gson gson, String httpMethod, ErrorBuilder<U> errorBuilder) {
    super(url, client, gson, gson.getAdapter(new TypeToken<T>() {
    }), errorBuilder);
    this.method = httpMethod;
}
 
源代码20 项目: gson   文件: MapTypeAdapterFactory.java
/**
 * Returns a type adapter that writes the value as a string.
 */
private TypeAdapter<?> getKeyAdapter(Gson context, Type keyType) {
  return (keyType == boolean.class || keyType == Boolean.class)
      ? TypeAdapters.BOOLEAN_AS_STRING
      : context.getAdapter(TypeToken.get(keyType));
}