Exemple #1
0
 /**
  * Configures Gson for custom serialization or deserialization. This method combines the
  * registration of an {@link TypeAdapter}, {@link InstanceCreator}, {@link JsonSerializer}, and a
  * {@link JsonDeserializer}. It is best used when a single object {@code typeAdapter} implements
  * all the required interfaces for custom serialization with Gson. If a type adapter was
  * previously registered for the specified {@code type}, it is overwritten.
  *
  * <p>This registers the type specified and no other types: you must manually register related
  * types! For example, applications registering {@code boolean.class} should also register {@code
  * Boolean.class}.
  *
  * @param type the type definition for the type adapter being registered
  * @param typeAdapter This object must implement at least one of the {@link TypeAdapter}, {@link
  *     InstanceCreator}, {@link JsonSerializer}, and a {@link JsonDeserializer} interfaces.
  * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern
  */
 @SuppressWarnings({"unchecked", "rawtypes"})
 public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) {
   $Gson$Preconditions.checkArgument(
       typeAdapter instanceof JsonSerializer<?>
           || typeAdapter instanceof JsonDeserializer<?>
           || typeAdapter instanceof InstanceCreator<?>
           || typeAdapter instanceof TypeAdapter<?>);
   if (typeAdapter instanceof InstanceCreator<?>) {
     instanceCreators.put(type, (InstanceCreator) typeAdapter);
   }
   if (typeAdapter instanceof JsonSerializer<?> || typeAdapter instanceof JsonDeserializer<?>) {
     TypeToken<?> typeToken = TypeToken.get(type);
     factories.add(TreeTypeAdapter.newFactoryWithMatchRawType(typeToken, typeAdapter));
   }
   if (typeAdapter instanceof TypeAdapter<?>) {
     factories.add(TypeAdapters.newFactory(TypeToken.get(type), (TypeAdapter) typeAdapter));
   }
   return this;
 }